2011-12-23 116 views
0

我是Spring批处理新手,我正在用Spring批处理实现我的业务用例。Spring批处理概念需要说明

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

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

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

任何人都可以请帮忙吗?

回答

1

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

  • Subscriber传递给这些项目编写者。
  • SubscriberMimeMessage的转换是由第二个写入器在转入MimeMessageItemWriter(由本书作者汇总)之前在内部完成的。
  • 将消息发送给订阅者应该在保存到数据库后完成,因为如果发送消息出现问题(如果需要该功能),数据库可以回滚,并且批量大小应该为1(否则回滚将会错误地丢弃所有已成功发送的通知)。