Я новичок в использовании ActiveMQ и пытаюсь понять, как работает сеть брокеров. Я прочитал документацию activemq, а также просмотрел некоторые статьи в Интернете, такие как http://www.jakubkorab.net/2011/11/understanding-activemq-broker-networks.htmlСеть брокерских центров ActiveMQ:
У меня есть следующая настройка на моем локальном рабочем столе Windows. Существует 2 сервера tomcat, работающих на 8080 и 9080 соответственно, с веб-приложением, в которое включено активное приложение mq. Веб-приложение запускает брокер на старте вверх и, следовательно, у меня есть следующий 2 брокеров, когда оба сервера находятся на
Брокер A: Бег на 61616 брокер B: Бег на 61617
Брокер A имеет сетевой разъем установлен в есть подключение к брокеру B и брокер B имеет сетевое подключение к брокеру а как с конфигурации по умолчанию
Я наблюдаю следующее поведение
- При подключении к веб-приложение на сервере а, опубликовать сообщение, начать сотрудничество nsumer в веб-приложении на сервере B и попытайтесь получить сообщение. Я получаю сообщение, и оно удаляется из обоих брокеров A и B. Я тестирую, пытаясь получить сообщение с использованием метода receiveSelected впоследствии, и я не получаю никаких данных.
- Когда я подключаюсь к веб-приложению на сервере A, публикую сообщение, запускаю пользователя в веб-приложении на сервере A и пытаюсь получить сообщение, которое я получаю, и оно удаляется из обоих брокеров A и B. Те же тесты, что и в пункте 1, check
Мой вопрос: в какой момент сообщение удаляется из магазинов для обоих брокеров - я только после того, как потребитель запросил сообщение и подтвердил его? Означает ли это, что во время публикации сообщение находится в местных магазинах обоих брокеров?
Спасибо за подробное объяснение. Хотя он дает некоторую перспективу, он не отвечает на вопрос, который у меня есть, так это то, что в моей настройке брокеры, похоже, работают как набор. Поэтому независимо от того, какой брокер я публикую сообщение, я могу получить его от брокера только после того, как он будет получен, я не смогу его получить снова. Я использую шаблон JMS Spring со следующими свойствами: – user3215143
<свойство name = "sessionTransacted" value = "true" /> <свойство name = "sessionAcknowledgeMode" value = "# {T (javax.jms.Session) .AUTO_ACKNOWLEDGE } "/> – user3215143
Используется семантика JMS. Очереди - это одноразовое потребление сообщения для всех потребителей, независимо от местонахождения потребителя в сети брокеров (с упомянутыми выше предостережениями о доставке). Темы передают сообщения всем потребителям. – ash