2011-12-23 3 views
0

Я новичок в весенней партии, и у меня возникла проблема с реализацией моего делового использования с пакетом Spring.Уточнение, необходимое с концепциями весеннего пакета

В принципе, я читаю данные из базы данных, то есть список подписчиков на информационный бюллетень. Затем мне нужно отправить электронное письмо каждому подписчику, а также вставить данные в базу данных, чтобы узнать, к какому абоненту отправлено электронное письмо.

Я использую реализацию ItemProcessor, способ обработки которого возвращает MimeMessage и принимает подписчика в качестве аргумента; писатель, связанный с этим процессором, имеет тип: org.springframework.batch.item.mail.javamail.MimeMessageItemWriter.

Проблема в том, что мне нужен другой писатель для вставки базы данных (возможно, с помощью CompositeItemWriter), который принимает список подписчиков в качестве аргумента, и все, что у меня есть в качестве входных данных, - это MimeMessage из вышеуказанного ItemProcessor.

Может ли кто-нибудь помочь?

ответ

1

От того, что вы сказали, используя интерфейс ItemProcessor для сохранения сообщения в базе данных, концептуально не так. Для этого вам нужно использовать ItemWriter. Вы можете реализовать запись в БД как ItemWriter и отправить почтовое сообщение как ItemWriter и использовать CompositeItemWriter, чтобы объединить их.

  • Subscriber передается этим производителям.
  • Преобразование Subscriber в MimeMessage выполняется вторым автором внутри перед передачей на MimeMessageItemWriter (который агрегируется этим автором).
  • Отправка сообщения подписчику должна быть выполнена после сохранения в БД, поскольку БД можно отменить, если что-то пойдет не так с отправкой сообщения (если вам нужна эта функция), а размер партии должен быть 1 (иначе откат будет неправильно отбросить все уведомления, которые были успешно отправлены).
Смежные вопросы