Tasklets和Listeners:有时它们可​​以互换地实现。将tasklet与侦听器区分开来的准则是什么

时间:2013-06-12 20:45:11

标签: spring-batch

我正在编写一个弹簧批处理应用程序,它包含以下功能步骤:

  1. 从暂存区域中选择最新的xml文件
  2. 根据架构验证XML
  3. 将XML的内容写入数据库。
  4. 向提供工作状态的利益相关者发送邮件。
  5. 这是一份轻松的工作场景。 在这种情况下,#3是面向块的步骤,剩余的可以作为tasklet或者听众一次执行。

    问题:是否存在区分tasklet和侦听器的准则。 (例如:#4:发送邮件可以实现为监听器或步骤。)

1 个答案:

答案 0 :(得分:1)

在考虑使用tasklet或listener时,需要从潜在的重试角度考虑它们。

如果你在第3步放置了一个监听器,那么每次你工作时都会运行它。所以,如果您在步骤3中出现故障(说明处理过程中途并且整个作业停止),则当您重试整个作业时,将再次调用您的监听器。

如果使用tasklet,默认情况下不会重新运行。也就是说,第1步和第2步是成功的,所以不需要再次执行,只需转到失败的步骤(#3)并重试。

所以,一个看待它的简单方法, - tasklet ==如果成功则运行一次 - listener ==每次运行(包括重试)