Мне было интересно, в чем разница между очередью JMS и темой JMS.
Страница ActiveMQ говорит
темы
В JMS тема реализует семантику публикации и подписки . Когда вы публикуете сообщение, оно отправляется всем заинтересованным подписчикам, поэтому многие подписчики получат копию сообщения. Только подписчики, имевшие активную подписку в момент получения сообщения брокером, получат копию сообщения.
Очереди
Очередь JMS реализует семантику балансировки нагрузки . Одно сообщение будет получено ровно одним потребителем. Если на момент отправки сообщения нет доступных потребителей, оно будет храниться до тех пор, пока не будет доступен потребитель, который сможет обработать сообщение. Если потребитель получит сообщение и не подтвердит его до закрытия, сообщение будет доставлено другому потребителю. В очереди может быть много потребителей с сообщениями балансировкой нагрузки между доступными потребителями.
Я хочу иметь что-то, что будет отправлять копию сообщения каждому подписчику в той же последовательности, в которой это сообщение было получено брокером ActiveMQ.
Есть предположения?
Темы предназначены для модели издатель-подписчик, а очереди - для точки-точка.
источник
JMS тема является тип назначения в модели 1-к-многим распределения. Одно и то же опубликованное сообщение получают все подписчики . Вы также можете назвать это «широковещательной» моделью. Вы можете думать о теме как о эквивалентной теме в шаблоне проектирования Observer. для распределенных вычислений. Некоторые провайдеры JMS эффективно выбирают реализацию этого как UDP вместо TCP. Что касается темы, то доставка сообщений - «забей и забудь» - если никто не слушает, сообщение просто исчезает. Если это не то, что вы хотите, вы можете использовать «долговременные подписки».
Очередь JMS является местом 1-к-1 сообщений. Сообщение принимается только одним из получателей-получателей (обратите внимание: постоянное использование подписчиков для «тематического клиента» и получателей для очереди клиента позволяет избежать путаницы). Сообщения, отправленные в очередь, хранятся на диске или в памяти до тех пор, пока кто-нибудь не заберет их или срок их действия не истечет. Таким образом, очереди (и долговременные подписки) нуждаются в активном управлении хранением, вам нужно думать о медленных потребителях.
В большинстве сред, я бы сказал, темы являются лучшим выбором, потому что вы всегда можете добавить дополнительные компоненты без необходимости менять архитектуру. Добавленные компоненты могут быть мониторингом, ведением журнала, аналитикой и т. Д. В начале проекта вы никогда не знаете, какими будут требования через 1 год, 5 лет, 10 лет. Изменения неизбежны, примите это :-)
источник
Это так просто:
источник
notificationProcessor
(отправляет уведомлениеkarmaProcessor
постеру ), (передает карму лайкеру и постеру),feedProcessor
(перемещает джот вверх в каналы людей). Все асинхронно конечно.Что касается сохранения заказа, см. Эту страницу ActiveMQ . Короче говоря: заказ сохраняется для одного потребителя, но у нескольких потребителей заказ доставки не гарантируется.
источник
Очереди
Pros
Cons
темы
Pros
Cons
источник
Если у вас есть N потребителей, то:
Темы JMS доставляют сообщения N из N Очереди JMS доставляют сообщения 1 из N
Вы сказали, что «ищете« вещь », которая будет отправлять копию сообщения каждому подписчику в той же последовательности, в которой это сообщение было получено брокером ActiveMQ».
Таким образом, вы хотите использовать тему для того, чтобы все N подписчиков получили копию сообщения.
источник
ТЕМА :: тема - это общение один-ко-многим ... (многоточечный или публиковать / подписаться) Пример: - представьте, что издатель публикует фильм в YouTube, тогда все его подписчики получат уведомление .... QUEVE :: queve - один-к -единство ... Пример: -При публикации запроса на пополнение он отправляется только одному qreciever ... всегда помните, что если запрос поступил на все приемники, то произошло многократное пополнение, поэтому при разработке анализа, подходящего для приложения
источник
Очередь - это управляемый объект JMS, используемый для хранения сообщений, ожидающих приема подписчиков. Когда все подписчики использовали сообщение, сообщение будет удалено из очереди.
Тема заключается в том, что все подписчики темы получают одно и то же сообщение при публикации сообщения.
источник