Spring批处理概念需要说明
问题描述:
我是Spring批处理新手,我正在用Spring批处理实现我的业务用例。Spring批处理概念需要说明
基本上,我正在从数据库中读取数据,即从订阅者列表中查看简报。然后,我需要向每个订户发送一封电子邮件,并将数据插入到数据库中,以便知道电子邮件发送给哪个订阅者。
我使用一个ItemProcessor实现,它的进程方法返回一个MimeMessage并将一个订阅者作为参数;与此处理器关联的作者是类型:org.springframework.batch.item.mail.javamail.MimeMessageItemWriter
。
问题是我需要另一个数据库插入的写入器(可能使用CompositeItemWriter),它将一个订阅者列表作为参数,我所有的输入都是来自上述ItemProcessor的MimeMessage。
任何人都可以请帮忙吗?
答
从你所说的使用ItemProcessor
接口将消息保存到数据库的想法是不正确的。你需要使用ItemWriter
。您可以实现对数据库的写入,如ItemWriter
,并将邮件消息发送为ItemWriter
,并使用CompositeItemWriter
来合并它们。
-
Subscriber
传递给这些项目编写者。 -
Subscriber
到MimeMessage
的转换是由第二个写入器在转入MimeMessageItemWriter
(由本书作者汇总)之前在内部完成的。 - 将消息发送给订阅者应该在保存到数据库后完成,因为如果发送消息出现问题(如果需要该功能),数据库可以回滚,并且批量大小应该为1(否则回滚将会错误地丢弃所有已成功发送的通知)。