A JMS topic - это тип пункта назначения в модели распределения 1-ко-многим.Одно и то же опубликованное сообщение получают все потребители подписчики .Вы также можете назвать это «широковещательной» моделью.Вы можете рассматривать тему как эквивалент субъекта в шаблоне проектирования наблюдателя для распределенных вычислений.Некоторые провайдеры JMS эффективно выбирают реализацию этого как UDP вместо TCP.Что касается темы, то доставка сообщений - это «забей и забудь» - если никто не слушает, сообщение просто исчезает.Если это не то, что вам нужно, вы можете использовать «долговременные подписки».
A JMS-очередь является адресатом сообщений 1-к-1.Сообщение принимается только одним из получателей (обратите внимание: при последовательном использовании подписчиков для 'тематического клиента и получателей для очереди клиент избегает путаницы).Сообщения, отправленные в очередь, хранятся на диске или в памяти до тех пор, пока кто-нибудь не заберет их или срок их действия не истечет.Таким образом, очереди (и долговременные подписки) нуждаются в активном управлении хранением, вам нужно думать о медленных потребителях.
В большинстве сред, я бы сказал, темы - лучший выбор, потому что вы всегда можетедобавить дополнительные компоненты без изменения архитектуры.Добавленными компонентами могут быть мониторинг, ведение журнала, аналитика и т. Д. В начале проекта вы никогда не знаете, какими будут требования через 1 год, 5 лет, 10 лет.Изменения неизбежны, примите их :-)