我之前曾两次实施过Spring批处理,但它设计为每天仅运行一次。
现在,我有了一个新要求,每当一条记录被插入表中时,我都需要启动批处理。每当插入新记录时,它将启动作业,并且批处理将生成PDF并将其保存在存储库中并向用户发送邮件。
我不确定如何设计一天运行多次的spring批处理,或者对于这种情况下的Spring批处理是否正确?有人可以对此有所启发吗?谢谢!!!
答案 0 :(得分:2)
您可以实现一个侦听器,以捕获何时将数据存储在db中(例如,轻松使用hibernate),然后使用CommandLineJobRunner
手动启动您的作业。
您可以运行几次,只是要小心批处理实例使用标识符模式
答案 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()。 试试这个