Как найти всех пользователей, подписавшихся на тему в spring веб-сайтах

Когда вы делаете что-то вроде приложения чата с помощью Spring Websockets, полезно знать, кто все подписался на какую-либо данную тему. Для, например, данные присутствия, отображаемые на клиентах.

Я знаю, что я могу реализовать ApplicationListener и сохранить свой собственный список "подключенных пользователей", но похоже, что библиотека уже должна выполнять эту работу.

Рекомендуемый способ получения активной информации о подписке из библиотеки напрямую (и без сохранения моего собственного списка в памяти или db).

Ответы

Ответ 1

Вы правы, вы можете использовать события ApplicationContext, но, к сожалению, эти события касаются событий пользовательских сеансов и событий брокера, t быть уведомленным, когда пользователь подписывается на конкретную тему.

Это можно сделать при использовании SimpleBrokerMessageHandler, получив SubscriptionRegistry. Но опять же, SimpleMessageBroker не используется для производства.

Если вы используете RabbitMQ, вы можете получить эту информацию из своего REST API.

Дело в том, что это очень специфично для реализации брокера, поэтому мне интересно, имеет ли смысл в этой функции смысл в Spring Framework. Не могли бы вы открыть JIRA issue, чтобы начать обсуждение?