Я использую Spring DefaultMessageListenerContainer
для получения сообщений из очереди ActiveMQ. Это приложение является единственным производителем сообщений в этой очереди. Приложение кластеризовано так, что в случае, когда у меня есть два экземпляра (instance1
, instance2
), как я могу гарантировать, что сообщения, созданные и отправленные в очередь от instance1
, принимаются слушателем сообщения по адресу instance1
, а сообщения, созданные и отправленные в очередь от instance2
принимаются слушателем сообщения по адресу instance2
? Моя первоначальная идея состояла в том, чтобы установить свойство messageSelector
DefaultMessageListenerContainer
, но я хотел бы, чтобы каждое приложение имело ту же конфигурацию.Получать сообщения JMS только на узле, в котором они были созданы
0
A
ответ
0
Вы не можете этого сделать; вам либо нужна отдельная очередь для каждого экземпляра, либо используйте селектор сообщений.
спасибо. Прося эту последнюю ночь, я подумал о том, чтобы просто добавить суффикс в очередь, которая указана в качестве заполнителя и передана как опция JVM. Теперь это работает отлично. – rick
Конечно, очереди могут быть довольно легкими, но если у вас есть несколько узлов, он становится прилично неуправляемым. Гэри пишет, селектор сообщений хорош, добавьте свое собственное свойство JMS для идентификации узла, а затем создайте соответствующий селектор сообщений, чтобы узел получал только свои сообщения. –