2013-03-26 5 views
0

У нас есть наше приложение, развернутое на двух разных серверах (Weblogic). У нас есть функциональность для отправки электронной почты по расписанию. Поскольку наше приложение работает на двух разных серверах, пользователи получают 2 письма (каждый с одного сервера). Нам нужно ограничить его 1. Идеи приветствуются.Несколько писем

+0

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

ответ

1

Как вы не описали систему полностью, но все же, учитывая, как правило, есть много решения этой проблемы

  • Marking отправить электронную почту в центральном положении, может быть хранилище данных или кэш-памяти:

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

  • Создание отдельного компонента для электронной почты, который получает данные от обоих и отправляет расписание по расписанию: Возможным решением может быть то, что компонент отправки электронной почты должен быть отделен от основного приложения и развернут в одном месте и взаимодействовать с хранилищем данных электронной почты или репозитория и отправлять запланированные электронные письма.

Надеется, что это помогает

+0

Спасибо за ваши предложения :) Мы планируем использовать вариант 1. – NightsWatch

+0

Как вы используете jee, ваша запущенная работа может публиковать сообщение в распределенную очередь, а затем потреблять это с использованием бина, управляемого сообщением, гарантируя, что только один узел в кластере потребляет и публикует электронное письмо – darrenmc

+1

@ user2198540, если вы нашли какой-либо из предложенных ответов полезным, подумайте о том, чтобы отметить его как «правильный», , Помогите посетителям определить, какой из них (для вашего случая) наиболее полезен. (И также вознаграждение Ответчика за очки репутации) –

0

Другого возможным решению может быть иметь очереди и у вас есть UDQ и MDB потребляя сообщение и отправки электронной почты. Это решение будет работать, когда один из 2 управляемых серверов снизится и масштабируется, когда вы имеете дело со многими сообщениями.

Использование БД может добавить узкое место, если ваша нагрузка высока.

Добавление почтового компонента только на одном сервере может привести к компрометации при высокой доступности.

+0

Я реализовал логику имени сервера. Я знаю имена серверов, на которых мое приложение будет развернуто, поэтому с помощью INetAddress я получил имя сервера, а в DB я сделал записи, которые должны быть моим сервером отправки электронной почты и который должен служить сервером мониторинга (этот сервер будет отправлять электронную почту как только первый сервер выходит из строя). Я смог добиться лучшего решения, что я действительно хотел :). – NightsWatch

Смежные вопросы