我们可以每天多次运行Spring Batch吗?

时间:2020-04-30 22:20:01

标签: spring spring-boot spring-batch

我之前曾两次实施过Spring批处理,但它设计为每天仅运行一次。

现在,我有了一个新要求,每当一条记录被插入表中时,我都需要启动批处理。每当插入新记录时,它将启动作业,并且批处理将生成PDF并将其保存在存储库中并向用户发送邮件。

我不确定如何设计一天运行多次的spring批处理,或者对于这种情况下的Spring批处理是否正确?有人可以对此有所启发吗?谢谢!!!

2 个答案:

答案 0 :(得分:2)

您可以实现一个侦听器,以捕获何时将数据存储在db中(例如,轻松使用hibernate),然后使用CommandLineJobRunner手动启动您的作业。

请参见spring_source

您可以运行几次,只是要小心批处理实例使用标识符模式

答案 1 :(得分:1)

根据您的要求,您可以在@EntityListeners的帮助下(如果正在运行hiberante)实现此目的。 让我给你一个虚拟的场景:-

 @Entity
  @Table(name="Order")
  @EntityListeners(OrderListner.class)
  public class Order{

    @Id
    public Integer id;

    // other properties
  }

此侦听器:-

class OrderListner{

    @PostPersist
    public void doStartSchedulerCode(){
        // You can call the code from here responobile for generating pdf and send mail,

    }

  }

每次在订单表中插入一行时,都会调用doStartSchedulerCode()。 试试这个