Как ограничить количество потребителей в очереди ActiveMQ JMS

Мы используем ActiveMQ и ищем способ применить политику одного потребителя для некоторых наших очередей JMS. Я потратил некоторое время на поиск в Google, но не могу найти способ ограничить количество потребителей в очереди.

Любое из следующих решений было бы хорошим решением для нас:

  • Способ указать максимальное количество активных потребителей в очереди (в нашем случае 1).
  • Способ опросить ActiveMQ, чтобы узнать, активны ли какие-либо потребители для очереди, прежде чем создавать новую.

Спасибо


person preston.m.price    schedule 14.10.2015    source источник


Ответы (1)


На стороне брокера нет настроек для принудительного применения такой вещи. Однако во всех клиентах можно использовать эксклюзивный потребительский вариант. Это позволило бы подключиться всем потребителям, но фактически только один из них получит все сообщения, пока он не отключится и не будет выбран новый эксклюзивный потребитель.

Если вы намерены разместить какую-либо облачную службу AMQ и действительно хотите, чтобы приложения, находящиеся вне вашего контроля, вели себя в соответствии с SLA, вам необходимо выполнить некоторое кодирование. Вы можете реализовать плагины ActiveMQ.

Если вы внедряете подключаемый модуль и создаете BrokerFilter тогда вы можете переопределить `addConsumer? метод. Взгляните на RuntimeConfigurationPlugin, чтобы узнать, как настроить плагин.

Пожалуйста, обратите внимание, что реализация плагина не является легкой настройкой администратора, но требует некоторой работы.

person Petter Nordlander    schedule 15.10.2015
comment
Мы контролируем всю экосистему. Брокеры AMQ, производители и потребители — все это наши собственные приложения и инфраструктура. Так что я не беспокоюсь о поддержке неизвестных приложений. Однако из-за некоторых ограничений в нашей проблемной области мы рискуем создать более одного получателя сообщений на очередь, и мы хотим предотвратить это. Известны ли вам какие-либо механизмы опроса AMQ о существующих потребителях для очереди? Я считаю, что это должно быть возможно, поскольку вы можете просматривать сведения о потребителях на страницах администратора AMQ. Спасибо - person preston.m.price; 16.10.2015