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