当前位置: 首页 > 知识库问答 >
问题:

Spring Batch--我有多个作业要顺序执行,并将第一个作业的结果传递给第二个

呼延宪
2023-03-14

Spring批处理作业我有多个作业要顺序执行。我需要将工作1的结果传递到工作2,在那里它将被处理,然后将工作2的数据传递到工作3。诸如此类。并且可以使用job1到job5(最后一个作业)的结果并写入输出。

Job1-从db读取并将结果存储在Hashmap中,Job2从文件读取并使用Job1 Hashmap处理结果。

所以请大家给出最好的解决方案。我能够使用ExecutionContext和JobPromotionListener在步骤之间传递数据,但不确定如何在多个作业之间传递数据

共有1个答案

东门新立
2023-03-14

不应该有5个作业进行批处理,而应该有同一作业的5个步骤。这是最好的方式来执行你正在努力实现的目标。

Spring Batch framework保存了每个步骤的执行状态,因此如果某个步骤失败,您可以重新启动只处理剩余步骤的作业。当然,有定制选项来控制步骤如何以及何时被视为失败或可重新启动。

 类似资料:
  • 我想一个接一个地运行两个工作。是的,我确实在网上搜索过,但他们有解决方案,包括在第一份工作中增加第二份工作。但我有不同的要求。我会在第一批作业执行完成后得到一个通知,而第二批作业只有在收到这个通知后才会运行。是否有可能在Spring Boot中一个接一个地运行两个作业。请救命!

  • 假设我在Hadoop环境中资源有限,我不想安排长时间运行的作业(即需要几天时间才能完成)。我正在分析大量过去的时间序列数据。我想安排一次需要一天数据的mapreduce作业(这需要一个小时来处理)。 那么,我如何安排,使新的工作提交后,前一个工作完成?

  • 用例:步骤1:ItemReader:从数据库中读取1000个ItemProcessor块中的数据:处理这些数据。ItemWriter:将数据写入地图,以便下一步使用 步骤2:ItemReader:读取地图ItemProcessor:处理地图数据并获取新对象。ItemWriter:将新的进程对象持久化到数据库中。 现在我希望Map在整个作业中保持不变,目前我已经为Map创建了一个不同的POJO类,并

  • 我有一个异步方法,它返回。 我将公开一个公共方法,该方法必须返回基于类a的数据的。此方法的调用方不应该知道classA: 到目前为止,一切都按预期进行。 现在,我喜欢在有ObjectB结果并调用void方法之后执行异步操作,我喜欢以某种方式将其传递给ObjectA: 但是似乎没有在中定义。 有没有办法做这样的手术?

  • 在我的应用程序中,我有两个片段,分别是fragmentA和FragmentB。当我点击fragmetA中的按钮时,fragmentB中会打开一个列表。现在,当我从fragmentB中的列表中选择一个项目时,我希望将结果传递给fragmentA。我只对所有片段使用一个TabActivity。当列表项在fragmentB中被选中时,我将从堆栈中弹出fragmentB,以便直接返回fragmentA。