для чего JMS хорош? [закрытый]

Я ищу (простые) примеры проблем, для которых JMS является хорошим решением и также обосновывает, почему JMS является хорошим решением в этих случаях. В прошлом я просто использовал базу данных в качестве средства передачи сообщений от до B, когда сообщение не может обязательно быть сразу обработано B.

Гипотетический пример такой системы - то, куда все недавно зарегистрированные пользователи должны быть отправлены приветственное электронное письмо в течение 24 часов после регистрации. Ради аргумента предположите, что DB не записывает время, когда каждый зарегистрированный пользователь, но вместо этого ссылка (внешний ключ) каждому новому пользователю хранится в pending_email таблице. Почтовые прогоны задания отправителя один раз в 24 часа, посылает электронное письмо всем пользователям в этой таблице, затем удаляет все записи pending_email.

Это походит на вид проблемы, для которой должен использоваться JMS, но мне не ясно, каким преимуществом JMS обладал бы по подходу, который я описал. Одно преимущество подхода DB состоит в том, что сообщения являются персистентными. Я понимаю, что очереди сообщений JMS могут также быть сохранены, но в этом случае, кажется, существует мало различия между JMS и "базой данных как очередь сообщений" подход, который я описал?

Что я пропускаю? - Дон

71
задан Dónal 21 October 2008 в 14:11
поделиться

1 ответ

JMS в сочетании с JTA (Java Transaction API) и JPA (Java persistence API) могут быть очень полезными. С помощью простой аннотации вы можете поместить несколько действий с базой данных + отправку / получение сообщения в одну транзакцию. Поэтому, если один из них выходит из строя, все откатывается с использованием того же механизма транзакций.

0
ответ дан 24 November 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: