Как RabbitMQ определяет, имеет ли очередь статус Active в инструменте управления

При входе в инструмент веб-управления очередь с "активным соединением" показывает состояние "Активно" в разделе подробностей очереди. Обратите внимание, что понятие активного соединения - мое собственное, так как я просто опрашиваю эту очередь через API веб-сервиса от клиента через Интернет. У меня нет постоянного соединения. Главный вопрос - как можно получить этот статус программно? Я использую Java (Spring AMQP), но при необходимости могу вернуться обратно в Java-API кролика.

Я также посмотрел на HTTP API, но, насколько я могу судить, он не имеет прямого соответствия отображению "Status: Active" на портале управления HTTP.

1 ответ

Решение

После некоторых копаний я обнаружил, что вы можете узнать, простаивает ли очередь, посмотрев результат HTTP API. Если результат для очереди имеет поле "idle_since", то очередь простаивает, если поле отсутствует, очередь активна.

В моем случае я пытался определить "присутствие" пользователя на основе активности в очереди, и это поле не предоставляет эту информацию. Это поле отражает тот факт, что "что-то" произошло недавно (очереди помечены как идол для сохранения памяти в брокере). "Что-то", отмеченное выше, может быть клиентом, обращающимся к очереди, что в моем случае вполне нормально, но также может быть средством мониторинга, вызывающим list_queues из команды rabbitmqctl.

Если вы хотите сделать простое уведомление о присутствии / обмен сообщениями. Вот две ссылки, которые могут быть полезны. Первая - это расширение, которое добавляет новый тип обмена к кролику, а вторая - сообщение в блоге с разделом о том, как можно реализовать уведомления о присутствии, используя обмен для обмена привязками.

https://github.com/tonyg/presence-exchange

http://www.rabbitmq.com/blog/2010/10/19/exchange-to-exchange-bindings/

Другие вопросы по тегам