С помощью ActiveMQ Artemis можно ли узнать, перестал ли слушатель слушать тему?

#activemq-artemis

Вопрос:

Я использую ActiveMQ Artemis 2.18.0 и некоторые клиенты Spring Boot, которые взаимодействуют друг с другом через темы. Клиенты Spring Boot используют JMS для всех операций MQTT.

Я хотел бы знать, может ли продюсер с одним или несколькими подписчиками выяснить, активно ли слушает определенный подписчик или нет. Например, есть 3 клиента — SB1, SB2 и SB3. SB1 публикуется на test/topic , а SB2 и SB3 подписаны на test/topic . Если SB2 отключится по какой-либо причине, сможет ли SB1 узнать об этом?

Я понимаю, что для этого лучше всего подошли бы очереди, но мой проект гораздо лучше подходит для использования тем, и он уже настроен таким образом и отлично работает. Существует только одна операция , при которой необходимо определить, активен ли прослушиватель или нет, чтобы обновить online status его, что является важным параметром. Прямо сейчас клиенты и сервер постоянно опрашивают базу данных, чтобы online status она периодически обновлялась, я хочу избежать этого и вместо этого использовать то, что может предоставить Артемида.

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

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

2. Боюсь, я не могу изменить приложение так, чтобы это не было обязательным требованием. Я полностью понимаю, что разделение производителей и потребителей является операционным принципом и является большим преимуществом; власть имущие, к сожалению, этого не делают. Так что я посмотрю, поможет ли подписка на Management Notifications это.

Ответ №1:

Apache ActiveMQ Artemis отправляет уведомления для информирования слушателей о потенциально интересных событиях, созданных или закрытых потребителем, см. Уведомления управления по адресу http://activemq.apache.org/components/artemis/documentation/latest/management.html.

Прослушиватель адреса уведомления об управлении получит сообщение для каждого созданного или закрытого потребителя, см. Пример Уведомления об управлении по адресу http://activemq.apache.org/components/artemis/documentation/latest/examples.html#management-notification

Ответ №2:

Часть смысла обмена сообщениями на основе пабов/субсетей заключается в том, чтобы отделить производителя информации (издателя) от потребителя (подписчика). Как правило, опубликованному ДЕЙСТВИТЕЛЬНО не должно быть дела до того, есть ли вообще подписчики.

Если вы хотите знать статус подписчика, то обновлять его должен подписчик, а не издатель. Такие вещи, как функция «Последняя воля и завещание», позволяют подписчику обновлять свой статус в случае, если он явно не сделает этого при переходе в автономный режим.