0

私は Spring バッチを初めて使用し、Spring バッチを使用してビジネス ユース ケースを実装する際に問題が発生しています。

基本的に、データベース、つまりニュースレターの購読者のリストからデータを読み取っています。次に、各サブスクライバーに電子メールを送信するだけでなく、データベースにデータを挿入して、電子メールがどのサブスクライバーに送信されたかを知る必要があります。

process メソッドが MimeMessage を返し、サブスクライバーを引数として受け取る ItemProcessor 実装を使用します。このプロセッサに関連付けられているライターのタイプは:org.springframework.batch.item.mail.javamail.MimeMessageItemWriterです。

問題は、サブスクライバーのリストを引数として取り、入力として持っているのは上記の ItemProcessor からの MimeMessage だけであるデータベース挿入 (おそらく CompositeItemWriter を使用) 用に別のライターが必要なことです。

誰でも助けてもらえますか?

4

1 に答える 1

1

インターフェイスを使用しItemProcessorてメッセージをデータベースに保存することは、概念的に正しくありません。そのために使用する必要がありますItemWriter。DB as への書き込みと asItemWriterのメール メッセージの送信を実装し、それらを組み合わせてItemWriter使用​​することができます。CompositeItemWriter

  • Subscriberこれらのアイテムライターに渡されます。
  • Subscribertoの変換は、 (このライターによって集約される)MimeMessageに転送する前に、2 番目のライターによって内部的に行われます。MimeMessageItemWriter
  • サブスクライバーへのメッセージの送信は、DB に保存した後に行う必要があります。これは、メッセージの送信に問題が発生した場合 (その機能が必要な場合)、DB をロールバックできるためです。正常に送信された通知)。
于 2011-12-24T21:08:45.250 に答える