Spring批处理—我有多个作业要按顺序执行,并将第一个作业的结果传递给第二个作业

Spring批处理—我有多个作业要按顺序执行,并将第一个作业的结果传递给第二个作业,spring,spring-batch,Spring,Spring Batch,Spring批处理作业我有多个要顺序执行的作业。 我需要将job1的结果传递给job2,然后将job2的数据传递给job3。等等并且可以使用job1到job5(最后一个作业)的结果并写入输出 Job1-正在从数据库中读取并将结果存储在Hashmap中 Job2从文件中读取,并使用job1哈希映射处理结果 因此,请任何人都能为这个问题提出最好的解决方案。我能够使用ExecutionContext和JobPromotionListener在步骤之间传递数据,但不确定如何在多个作业之间传递数据,而不是

Spring批处理作业我有多个要顺序执行的作业。 我需要将job1的结果传递给job2,然后将job2的数据传递给job3。等等并且可以使用job1到job5(最后一个作业)的结果并写入输出

Job1-正在从数据库中读取并将结果存储在Hashmap中 Job2从文件中读取,并使用job1哈希映射处理结果


因此,请任何人都能为这个问题提出最好的解决方案。我能够使用ExecutionContext和JobPromotionListener在步骤之间传递数据,但不确定如何在多个作业之间传递数据,而不是在批处理中使用5个作业。同一个作业应该有5个步骤。这是实现你想要实现的目标的最佳方式


Spring批处理框架保持每个步骤执行的状态,以便在其中一个步骤失败的情况下,您可以重新启动只处理剩余步骤的作业。当然,有一些自定义选项可以控制一个步骤如何以及何时被视为失败或可重新启动。

Spring batch不提供开箱即用的支持。似乎您所需要的只是配置一些可以顺序执行的步骤。您还可以使用读卡器划分步骤,处理器和写入程序

批处理作业是时间驱动的,而不是事件驱动的(如本例所述,当Job1完成时,执行Job2)。不可能像客户机-服务器模型那样通过b/w两个批处理作业进行通信。您可能应该尝试将Job1结果存储在Job2可以访问的某个文件或DB表中,并安排具有足够时差的作业。为什么需要这些作业作为不同的作业?如果一个工作有多个处理器不是更有意义吗?谢谢你的回复,我想我们会使用多个步骤谢谢你的回复,我想我们会使用多个步骤谢谢你的回复,我想我们会使用多个步骤,要在步骤之间传递数据,请使用executioncontext或使用bean并自动连接它。任何人都可以告诉我使用bean和自动连接bean在步骤之间传递数据的步骤吗?这取决于数据的大小,但在正常情况下,您应该使用JobExecutionContext。感谢您的回答。对于某些值,我们希望使用JobExecutionContext,对于某些大数据,希望自动连接bean,任何链接或示例都会有所帮助