Как использовать Spring в качестве хранилища электронной почты - PullRequest
1 голос
/ 13 июня 2011

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

Ответы [ 2 ]

3 голосов
/ 13 июня 2011

Spring на самом деле не имеет решения для этого варианта использования.

Есть несколько вариантов:

  1. Получить настройку SMTP-сервера на локальном хосте, чтобы он передавал сообщение в центральный экземпляр. Это удаляет сетевое соединение между вашим приложением и почтовым сервером, следовательно, мы надеемся, что вероятность того, что оно не будет достигнуто, очень мала.
  2. Хранить сообщение в БД, не идеально, так как если существует проблема с сетью, которая препятствует доступу к почтовому серверу, может легко возникнуть проблема с сетью, которая влияет на доступ к БД. Также вам нужно будет создать какой-то процесс повторной отправки сообщения каждые x минут
  3. Отправьте сообщение в локальную постоянную JMS-очередь, затем обработанный сообщениями компонент (или контейнер обмена сообщениями) удалите сообщение и отправьте его на почтовый сервер

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

На самом деле я видел вариант 3, плохо реализованный в производственной системе с удаленным JMS-брокером. Важной особенностью является то, что JMS-брокер является локальным и, предпочтительно, незавершенным, так что нет вероятности того, что сетевой скачок повлияет на соединение.

1 голос
/ 13 июня 2011

Это не совсем весенний вопрос. То, что вы запрашиваете, - это механизм отправки почты, который может ставить очередь на отправку при неудаче с повторными попытками. Конечно, вы можете создать бин с такими возможностями и связать его с помощью Spring; я думаю, это было бы очень полезно для некоторых ситуаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...