0

我是 Spring Batch 的新手,我在使用 Spring Batch 实现我的业务用例时遇到了问题。

基本上,我正在从数据库中读取数据,即时事通讯的订阅者列表。然后,我需要向每个订阅者发送一封电子邮件,并将数据插入到数据库中,以便知道电子邮件发送给了哪个订阅者。

我使用了一个 ItemProcessor 实现,它的 process 方法返回一个 MimeMessage 并将订阅者作为参数;与此处理器关联的编写器的类型为:org.springframework.batch.item.mail.javamail.MimeMessageItemWriter

问题是我需要另一个用于数据库插入的编写器(可能使用 CompositeItemWriter),它将订阅者列表作为参数,我所拥有的所有输入都是来自上述 ItemProcessor 的 MimeMessage。

有人可以帮忙吗?

4

1 回答 1

1

从你所说的使用ItemProcessor接口将消息保存到数据库在概念上是不正确的。你需要使用ItemWriter它。您可以实现对 DB 的写入ItemWriter和发送邮件消息,ItemWriter并使用CompositeItemWriter它们来组合它们。

  • Subscriber被传递给这些项目作者。
  • Subscriberto的转换MimeMessage由第二个作家在内部完成,然后再转移到MimeMessageItemWriter(由这个作家聚合)。
  • 将消息发送给订阅者应该在保存到数据库之后完成,因为如果发送消息出现问题(如果您需要该功能),可以回滚数据库,并且您的批量大小应该为 1(否则回滚将错误地丢弃所有已成功发送的通知)。
于 2011-12-24T21:08:45.250 回答