Spring batch 微线程和监听器:有时它们可以互换实现。区分tasklet和侦听器的准则是什么

Spring batch 微线程和监听器:有时它们可以互换实现。区分tasklet和侦听器的准则是什么,spring-batch,Spring Batch,我正在编写一个spring批处理应用程序,它包括以下功能步骤: 从临时区域选择最新的xml文件 根据模式验证XML 将XML的内容写入数据库 向提供工作状态的利益相关者发送邮件 这是一个简单的工作场景。 在这种情况下#3是面向块的步骤,剩余的步骤可以作为小任务或侦听器一次性执行 问题:是否有任何准则可以区分tasklet和侦听器。 (EX:^ 4:发送邮件可以作为侦听器或步骤来实现)。< P>在考虑使用TaskLeor或侦听器时,需要从可能的重试角度考虑它们。 如果在步骤3中放置侦听器,则每次重

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

  • 从临时区域选择最新的xml文件
  • 根据模式验证XML
  • 将XML的内容写入数据库
  • 向提供工作状态的利益相关者发送邮件 这是一个简单的工作场景。 在这种情况下#3是面向块的步骤,剩余的步骤可以作为小任务或侦听器一次性执行

    问题:是否有任何准则可以区分tasklet和侦听器。
    (EX:^ 4:发送邮件可以作为侦听器或步骤来实现)。

    < P>在考虑使用TaskLeor或侦听器时,需要从可能的重试角度考虑它们。 如果在步骤3中放置侦听器,则每次重试作业时都会运行该侦听器。因此,如果您在步骤3中失败(例如,处理过程中途,整个作业停止),当您重试整个作业时,将再次调用侦听器

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

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

    谢谢。这澄清了我的问题。