我已经创建了一些Spring批处理项目,并使用Spring Cloud Data Flow(SCDF)部署了这些作业。
在SCDF中启动任务(作业)后,创建JVM执行任务(作业)。
但是,当任务完成时,JVM并不结束。它仍然存在。
当我启动作业20次时,它宣布
Cannot launch task A. The maximum concurrent task executions is at its limit [20]
并且有一些关于我的作业的信息,作业的第一个日志是以:
HikariPool-1 - Shutting down...
但是在我为Spring批处理项目使用了以下属性之后:
spring.cloud.task.singleInstanceEnabled=true
并使用JobExecutionListenerSupport使用afterJob方法,任务(作业)的日志以:
o.s.b.c.l.support.SimpleJobLauncher : Job: [SimpleJob: [name=remindJob]] completed with the following parameters: [{run.id=3}] and the following status: [COMPLETED] in 7s636ms
o.s.integration.leader.DefaultCandidate : DefaultCandidate{role=EngineProcess, id=126} leadership has been revoked: LockContext{role=Process, id=126, isLeader=false}
这些是我的Spring批处理作业的问题吗?
而我的主要问题是,哪一个负责完全停止JVM(任务)?Spring云数据流部分还是Spring批处理部分以及如何处理?
我认为当任务完成时,应该将其销毁(JVM停止),同时执行任务的数量不能达到极限。
我从github获得了设置属性spring.cloud.task.Closecontext_enabled=true
的解决方案。但是,我想深入理解为什么没有spring.cloud.task.Closecontext_enabled就不能完全关闭上下文的原因。将该属性设置为true之后。我的Spring批处理项目的日志显示警告:
main] o.s.b.f.support.DisposableBeanAdapter : Destroy method 'close' on bean with name 'getStudent' threw an exception: org.springframework.batch.item.ItemStreamException: Error while closing item reader
还有ItemReader代码:
@Bean
public JdbcCursorItemReader<Student> getStudent() {
JdbcCursorItemReader <Student> reader = new JdbcCursorItemReader<>();
reader.setDataSource(dataSource);
reader.setSql(QueryConstants.getStudent);
reader.setRowMapper(new BeanPropertyRowMapper<>(Student.class));
return reader;
}
我试图了解运行批处理任务时通过Spring Cloud数据流WRT数据源配置的预期行为。 Spring批处理数据库表(Batch\u JOB\u EXECUTION等)是否在SCDF数据库本身中?当通过SCDF启动任务时,似乎发生了一些神奇的事情,它在SCDF数据库中创建了这些表,并似乎在使用它们。它似乎正在将SCDF数据源注入我的应用程序? 我目前在localhost服务器版本2.0.1上运行。
我在Openshift集群上安装了一个Spring Cloud数据流。我尝试注册一个应用程序,然后创建一个任务,一切都很好,但当我试图安排任务时,我遇到了以下异常: 我不知道这是什么意思,我是Dataflow的新手。我不明白为什么他试图使用Maven而不是kubernetes部署器,也不明白为什么我会出现这个错误。有人能再给我解释一下吗? 顺便说一句,我将这些应用程序注册为docker容器。
目前,我正在从Spring XD作为我的工作流和运行时环境转移到Spring Cloud DataFlow和Apache Airflow。我想在Airflow中创建工作流,并使用自定义的Airflow操作员通过REST-API在Spring Cloud DataFlow服务器上运行Spring Cloud任务。 可以使用: 不幸的是,DataFlow在此请求中不返回作业执行ID,以创建用于监视应用
我有一个从流-任务-启动器-数据流调用的组合任务 我将流处理器中的几个属性传递给任务启动器数据流和子任务,例如。。。 这可以正常工作,但我已经达到了最大字符限制,并在组合任务pod上得到一个sql异常,说明我已经超过了2500个字符的限制。我想为所有任务而不是单独设置属性以节省字符空间,但使用通配符不起作用 有没有办法为所有任务设置属性,而不必单独设置? 我尝试在kubernetes中的Sprin
启动没有参数的时间戳任务应用程序失败。来自Spring Cloud Data Flow Server的日志显示了以下堆栈跟踪:https://gist.github.com/anonymous/420f3928b7831a11b378fc6792be1ffc。 运行输出 则生成
我们希望将我们所有的Spring云数据流任务和流部署修复到一组特定的节点。 我有一个样本任务,例如手动工作 (与此处的文档相比,这并不明显https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#configuration-kubernetes deployer似乎暗示关键在于节点选择器,而不是部