【问题标题】:can spring batch be used as job framework for non batch jobs (regular job)弹簧批处理可以用作非批处理作业的作业框架(常规作业)
【发布时间】:2017-09-19 11:41:43
【问题描述】:

是否可以将 Spring Batch 用作常规作业框架?

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

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

职位描述:

  1. 我需要针对特定​​设备执行包含多个步骤的作业。每个步骤都将与设备通信并等待设备确认它执行了之前给它的命令。
  2. 我需要重试、恢复和调度功能(考虑将 Spring Batch 与石英结合)
  3. 关于读-进程-写,我基本上是收到一个关于设备的命令请求,我做了一些 DB 读取,然后开始长时间的等待,所有这些都需要通过才能使作业/任务成功。

另外,我可以选择(证明)相关的 IMDG/DB。并发在范围之外(将在工作机制之外)。想到的另一种选择是 akka 演员。 (设备的作业将创建子演员作为步骤)

【问题讨论】:

    标签: spring-batch


    【解决方案1】:

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

    Spring Batch 基本上是一个 read-process-write 框架,其中读取和处理逐项发生,写入发生在块中(用于面向块的处理)。

    因此,如果您的工作逻辑适合 - read - process - write 范式,并且其余的事情对我来说似乎是次要的,那么您可以使用 Spring Batch。

    此外,对于 Spring Batch,您还应该评估关于 Job Repository 的部分。 Spring Batch 需要一个数据库(在内存中或在磁盘上)来存储作业元数据,它不是可选的。

    我认为,你应该多解释一下为什么你需要一个Job Framework,以及你正在运行什么样的逻辑,你称之为Job,所以我会相应地修改我的答案。

    【讨论】:

    • 好的,我们开始:) 1. 我需要针对特定​​设备执行一个包含多个步骤的作业。每个步骤都将与设备通信并等待设备确认它执行了给它的前一个命令。 2.我需要重试,恢复和调度功能(考虑将spring批处理与quartz结合)3.关于读-进程-写,我基本上得到一个关于设备的命令请求,我做了一点DB读取,然后开始长时间等待为了使工作/任务成功,所有需要经过的时期。
    • 另外,我可以选择(证明)相关的 IMDG/DB。并发在范围之外(将在工作机制之外)。想到的另一种选择是 akka 演员。 (设备的作业将创建子演员作为步骤)。
    • np,我已将您的 cmets 移植到您的问题描述中。
    猜你喜欢
    • 2017-11-03
    • 2021-01-02
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    相关资源
    最近更新 更多