首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring参数没有传播到Spring批处理作业参数

Spring参数没有传播到Spring批处理作业参数
EN

Stack Overflow用户
提问于 2018-03-21 23:42:53
回答 1查看 1.4K关注 0票数 1

我正在从普通的spring批处理迁移到spring云任务,并通过spring云数据流执行spring批处理。在我的工作和我为文件伤害而部署的示例工作中,我都遇到了以下问题:

ingest

我正在使用带有postgres后端的spring-cloud-dataflow-server-local-1.4.0.RELEASE。我还对该示例进行了修改,以便使用postgres数据库。

当我尝试第二次使用不同的参数运行任务时,就会出现问题。当我第一次运行它时:

代码语言:javascript
复制
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}

所以这很好,参数被传递给批处理作业。现在,当我尝试使用与任务不同的参数运行相同的任务时:

代码语言:javascript
复制
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数据库验证了数据流服务器和任务的相同功能。

EN

回答 1

Stack Overflow用户

发布于 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

但是,在本例中,如所述,已涵盖了这些要求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49418286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档