Очередь сообщений или Планировщик - PullRequest
7 голосов
/ 23 апреля 2010

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

Должен ли я использовать очередь сообщений для отправки электронной почты? Это более эффективно или правильно сделать так? Подход с планировщиком работает просто отлично.

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

Я еще не использовал JMS, так что это то, что я прочитал.

Walter

Ответы [ 3 ]

3 голосов
/ 23 апреля 2010

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

2 голосов
/ 23 апреля 2010

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

Чтобы ответить на ваш вопрос, очередь - это хороший инструмент для отправки электронного письма, если

  1. сообщение необходимо вернуть очередь в случае сбоя операции, хотя SMTP не знает, если электронная почта достигла места назначения.
  2. Какой-то триггер может поставить сообщение на очередь.

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

Если вы идете с планировщиком, то вы должны сделать так, чтобы планировщик поместил сообщение в очередь. Если нет, то вам нужно, чтобы какой-то другой триггер поместил сообщение в очередь.

1 голос
/ 23 апреля 2010

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

...