我正在从普通的spring批处理迁移到spring云任务,并通过spring云数据流执行spring批处理。在我的工作和我为文件伤害而部署的示例工作中,我都遇到了以下问题:
我正在使用带有postgres后端的spring-cloud-dataflow-server-local-1.4.0.RELEASE。我还对该示例进行了修改,以便使用postgres数据库。
当我尝试第二次使用不同的参数运行任务时,就会出现问题。当我第一次运行它时:
task launch fileInjectTask --arguments "filePath=classpath:data.csv --spring.cloud.task.closecontext_enable=false"以下是日志中的输出:
2018-03-22 10:10:51.446 INFO 10431 --主o.s.b.a.b.JobLauncherCommandLineRunner :运行默认命令行: filePath=classpath:data.csv,filePath=classpath:data.csv-- Running .Cloud.task.Executionid=13 2018-03-22 10:10:51.497 INFO 10431 --主o.s.b.c.l.support.SimpleJobLauncher : Job:[FlowJob: name=ingestJob]启动,参数如下:{filePath=classpath:data.csv,-spring.cloud.task.executionid=13,-spring.cloud.task.closecontext_enable=false,run.id=1}
所以这很好,参数被传递给批处理作业。现在,当我尝试使用与任务不同的参数运行相同的任务时:
task launch fileInjectTask --arguments "filePath=/home/hmcmanus/spring-cloud-dataflow-samples/batch/file-ingest/src/main/resources/data.csv --spring.cloud.task.closecontext_enable=false"我在日志中得到了以下内容:
2018-03-22 10:12:18.249 INFO 10554 --主o.s.b.a.b.JobLauncherCommandLineRunner :运行默认命令行,使用:o.s.b.a.b.JobLauncherCommandLineRunner --spring.cloud.task.executionid=14 2018-03-22 10:12:18.322 INFO 10554 --主o.s.b.c.l.support.SimpleJobLauncher : Job:[FlowJob: name=ingestJob]启动,参数如下:{filePath=classpath:data.csv,-spring.cloud.task.executionid=13,run.id=1,-spring.cloud.task.closecontext_enable=false}
正如您可以看到的第二个例子,任务的参数很好,但是批处理作业的参数是任务执行的旧参数。
这里有什么我遗漏的东西吗?为什么spring批处理作业没有获得新任务执行的参数?
更新
为了排除数据库中的差异以及为运行数据库而需要进行的任何修改,我还通过嵌入式H2数据库验证了数据流服务器和任务的相同功能。
发布于 2018-03-22 02:08:03
在这个例子中,我遇到了同样的情况。到目前为止,我已经意识到作业是使用第一个执行任务的id作为参数来执行的,在您的例子中是task.executionid=13,这个值不会在执行作业的过程中改变。根据引用:
Spring为在über-jar中轻松执行批处理作业提供了便利。Spring对此功能的支持允许开发人员在执行过程中执行多个批处理作业。提供了将作业(作业执行)的执行与任务的执行相关联的能力,以便可以追溯到另一个任务。 这个功能是通过使用TaskBatchExecutionListener来完成的。默认情况下,此侦听器在配置了Spring批处理作业(通过在上下文中定义一个作业类型的bean )的任何上下文中都是自动配置的,并且spring云任务批处理jar在类路径中可用。侦听器将被注入到所有作业中。
https://docs.spring.io/spring-cloud-task/current-SNAPSHOT/reference/htmlsingle/#batch-association
但是,在本例中,如所述,已涵盖了这些要求。
https://stackoverflow.com/questions/49418286
复制相似问题