可以将spring批处理用作非批处理作业的作业框架(常规作业)

时间:2017-09-19 11:41:43

标签: spring-batch

是否可以将弹簧批用作常规作业框架?

我想创建一个负责任的设备服务(微服务) 在设备上获取事件和触发作业。设备是远程的,因此完成作业需要一些时间,但它不是批处理作业(不是定期运行或分区大型数据集)。

我想知道Spring批处理是否仍然可以用作作业框架,或者它是否仅用于批处理。如果答案是否定的,那么什么工作框架(除了编写自己的工作框架)都很有名?

职位描述:

  1. 我需要针对特定​​设备执行包含多个步骤的作业。每个步骤都将与设备通信,并等待设备确认它执行了给予它的前一个命令。
  2. 我需要重试,恢复和调度功能(考虑将弹簧批与石英结合使用)
  3. 关于read-process-write,我基本上得到一个关于设备的命令请求,我做一些DB读取,然后开始所有需要传递的长等待时间段,以便作业/任务成功。
  4. 另外,我可以选择(证明)相关的IMDG / DB。并发超出了范围(将在作业机制之外)。想到的另一种选择是akka演员。 (设备的工作将创建儿童演员作为步骤)

1 个答案:

答案 0 :(得分:0)

据我所知 - 不定期运行或分区大数据集不是使用Spring Batch的主要要求。

Spring Batch基本上是一个读取 - 处理 - 编写框架,其中阅读&处理逐项进行,写入以块的形式进行(对于面向块的处理)。

因此,如果您的工作逻辑适合,您可以使用Spring Batch - 读取 - 处理 - 编写范例,其余的东西似乎是次要的。

此外,使用Spring Batch,您还应评估有关作业存储库的部分。 Spring Batch需要一个数据库(在内存或磁盘上)来存储作业元数据,而不是可选的。

我认为,您应该提供更多解释,说明为什么您需要一个工作框架以及您正在运行什么样的逻辑,您称之为工作所以我会相应地修改我的答案。