Spring batch Spring批处理概念需要澄清

Spring batch Spring批处理概念需要澄清,spring-batch,itemwriter,itemprocessor,Spring Batch,Itemwriter,Itemprocessor,我是SpringBatch的新手,在使用SpringBatch实现我的业务用例时遇到了一个问题 基本上,我是从数据库中读取数据,即新闻稿的订户列表。然后,我需要向每个订户发送一封电子邮件,并将数据插入数据库,以便知道电子邮件发送到了哪个订户 我使用一个ItemProcessor实现,它的process方法返回一个MimeMessage并将订阅者作为参数;与此处理器关联的编写器类型为:org.springframework.batch.item.mail.javamail.mimessageIte

我是SpringBatch的新手,在使用SpringBatch实现我的业务用例时遇到了一个问题

基本上,我是从数据库中读取数据,即新闻稿的订户列表。然后,我需要向每个订户发送一封电子邮件,并将数据插入数据库,以便知道电子邮件发送到了哪个订户

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

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


有人能帮忙吗?

根据您所说的,使用
ItemProcessor
界面将消息保存到数据库在概念上是不正确的。为此,您需要使用
ItemWriter
。您可以实现以
ItemWriter
的形式写入数据库,以
ItemWriter
的形式发送邮件消息,并使用
CompositeItemWriter
组合它们

  • Subscriber
    被传递给这些项目编写器
  • Subscriber
    MimeMessage
    的转换由第二个writer在内部完成,然后再传输到
    MimeMessageItemWriter
    (由该writer聚合)
  • 将消息发送到订阅服务器应在保存到DB后完成,因为如果发送消息时出现问题(如果您需要该功能),DB可以回滚,并且批大小应为1(否则回滚将错误地放弃所有已成功发送的通知)