Позвольте мне сначала предоставить некоторую справочную информацию ...
Модель адресов ActiveMQ Artemis включает 3 основных элемента - адреса, очереди и типы маршрутизации. Это низкоуровневые объекты, которые используются для реализации всех различных семантик для всех различных протоколов и конфигураций, которые поддерживает брокер.
STOMP, напротив, просто поддерживает неоднозначные «места назначения». В спецификации STOMP 1.2 говорится об адресатах:
Сервер STOMP моделируется как набор адресатов, на которые можно отправлять сообщения. Протокол STOMP рассматривает места назначения как непрозрачную строку, а их синтаксис определяется спецификацией реализации сервера c. Кроме того, STOMP не определяет, какой должна быть семантика доставки адресатов. Семантика адресатов доставки или обмена сообщениями может варьироваться от сервера к серверу и даже от пункта назначения к пункту назначения. Это позволяет серверам проявлять творческий подход с семантикой, которую они могут поддерживать с помощью STOMP.
В базовой модели адресов сообщения отправляются на адреса и потребляются из очередей. Адреса и очереди именуются независимо, поэтому имена, используемые основным производителем и потребителем, могут различаться.
ActiveMQ Artemis поддерживает семантику как точка-точка, так и семантика публикации / подчинения для пунктов назначения STOMP. Подробнее о том, как настроить эту семантику, можно прочитать в последней документации STOMP ActiveMQ Artemis .
В случае использования STOMP точка-точка сообщение отправляется в пункт назначения и используется из того же пункта назначения. Имя, которое используют и производитель, и потребитель STOMP , совпадают . Для поддержки этой семантики брокер использует адрес ядра и ядро anycast очередь с тем же именем .
В сценарии использования STOMP pub / sub a клиент создает подписку в пункте назначения, которую он затем может использовать для получения сообщений, отправляемых этому пункту назначения. Имя, которое подписчик и производитель STOMP использует , совпадает . Для поддержки этой семантики брокер использует адрес ядра и ядро multicast queue с разными именами . Имя основной очереди генерируется посредником автоматически. Затем подписчик может получать сообщения непосредственно из базовой очереди подписки.
Все это делается за кулисами для клиентов STOMP, но важно понимать, как STOMP сопоставляется с адресной моделью ActiveMQ Artemis, чтобы вы могли настройте вещи соответствующим образом
В вашем случае вы настроили адрес с 2 многоадресными очередями и пытаетесь использовать их из этих очередей. Этот сценарий использования представляет собой сочетание двухточечной связи и публикации / подписки, поскольку у вас есть статически определенные очереди (т. Е. Очереди, автоматически не создаваемые брокером в ответ на подписчика), но очереди многоадресные. Эти очереди похожи на статически настроенные долговременные подписки. Чтобы получить прямой доступ к очередям, вам нужно использовать их полное имя очереди (например, FQQN) от вашего клиента. FQQN следует шаблону <address>::<queue>
, поэтому в вашем случае вы бы использовали
Site.SOF.Order.Fulfillment.Submission.ActiveOmni.Topic::Site.SOF.Order.Fulfillment.Submission.ActiveOmni.queue
или
Site.SOF.Order.Fulfillment.Submission.ActiveOmni.Topic::Site.SOF.Order.Fulfillment.Submission.ActiveOmni.log.queue