Требуется уведомление Artemis, когда количество сообщений в очереди> 100

#activemq-artemis

#activemq-artemis

Вопрос:

У нас уже есть настройка Apache ActiveMQ Artemis. Новое требование требует, чтобы нам требовалось уведомление Artemis ТОЛЬКО тогда, когда количество сообщений в очереди превышает 100. Я видел сообщения с уведомлениями, но все они связаны с операциями (например, созданием очереди, удалением, нарушением безопасности и т. Д.), Но не с условием. Как я могу этого добиться?

Ответ №1:

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

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

Например, вы можете настроить плагин Prometheus metrics для предоставления метрик от брокера, а затем использовать оповещения Prometheus, или вы можете пойти дальше и интегрироваться с Grafana и использовать его оповещения.

Если вам нужно более простое решение, вы могли бы просто написать Java-приложение или скрипт, который опрашивал брокера через JMX или HTTP, а затем отправлял оповещения по мере необходимости. Вы можете найти пример Java-приложения, которое использует JMX для операций управления, в каталоге брокера examples/features/standard/jmx . Если вы хотите использовать HTTP, вы можете использовать команду, например curl , для вызова методов управления в MBeans брокера. Вам просто нужно передать ему «имя объекта MBean». «Имя объекта» для очереди на брокере следует этому шаблону:

 org.apache.activemq.artemis:broker="<brokerName>",component=addresses,address="<addressName>",subcomponent=queues,routing-type="<routingType>",queue="<queueName>"
  

Конечно, вам нужно будет заменить <brokerName> , <addressName> , <routingType> , и <queueName> соответствующими значениями для вашей конфигурации.

Вот простой пример, который считывает MessageCount атрибут для очереди foo :

 curl -k --user admin:admin -H "Origin: http://localhost:8161" "http://localhost:8161/console/jolokia/read/org.apache.activemq.artemis:broker="0.0.0.0",component=addresses,address="foo",subcomponent=queues,routing-type="anycast",queue="foo"/MessageCount"
  

Обратите внимание, что " символы были экранированы, " чтобы обеспечить правильное выполнение в оболочке.

Комментарии:

1. Спасибо за быстрый ответ, Джастин. Я не должен использовать внешние инструменты. Не могли бы вы указать мне пример HTTP-кода для извлечения счетчика?

2. Я обновил свой ответ, чтобы ответить на ваш комментарий. Надеюсь, это поможет!

3. Мой ответ ответил на ваш вопрос? Если да, пожалуйста, отметьте это как правильное, чтобы помочь другим пользователям, у которых может возникнуть такой же вопрос в будущем. Спасибо!