2016-11-11 7 views
0

Я использую Spring DefaultMessageListenerContainer для получения сообщений из очереди ActiveMQ. Это приложение является единственным производителем сообщений в этой очереди. Приложение кластеризовано так, что в случае, когда у меня есть два экземпляра (instance1, instance2), как я могу гарантировать, что сообщения, созданные и отправленные в очередь от instance1, принимаются слушателем сообщения по адресу instance1, а сообщения, созданные и отправленные в очередь от instance2 принимаются слушателем сообщения по адресу instance2? Моя первоначальная идея состояла в том, чтобы установить свойство messageSelectorDefaultMessageListenerContainer, но я хотел бы, чтобы каждое приложение имело ту же конфигурацию.Получать сообщения JMS только на узле, в котором они были созданы

ответ

0

Вы не можете этого сделать; вам либо нужна отдельная очередь для каждого экземпляра, либо используйте селектор сообщений.

+0

спасибо. Прося эту последнюю ночь, я подумал о том, чтобы просто добавить суффикс в очередь, которая указана в качестве заполнителя и передана как опция JVM. Теперь это работает отлично. – rick

+0

Конечно, очереди могут быть довольно легкими, но если у вас есть несколько узлов, он становится прилично неуправляемым. Гэри пишет, селектор сообщений хорош, добавьте свое собственное свойство JMS для идентификации узла, а затем создайте соответствующий селектор сообщений, чтобы узел получал только свои сообщения. –