Парадигма Pub / Sub: Могу ли я узнать, живы ли подписчики? - PullRequest
1 голос
/ 30 декабря 2011

Я использую JMS (ActiveMQ) между издателем тем и переменным числом подписчиков тем.

Мне бы пришлось проверить, находятся ли в данный момент некоторые подписчики в автономном режиме.(отключен, отключен, не может связаться и т. д.).
Есть ли способ, с помощью которого JMS позволяет издателю знать, какие подписчики "зарегистрированы"?

Прямо сейчас у меня это реализовано такчто подписчики отправляют «живое» сообщение в определенную очередь (выступая в качестве производителей), а издатель получает их (выступая в качестве потребителя): если обнаруживается, что любой из подписчиков не «пинговал» в течение X секунд (порог)предполагается, что он не в сети.Это работает, но мне было любопытно узнать, заново ли я изобрел колесо ...

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

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 31 декабря 2011

Я не думаю, что есть способ сообщить вашему издателю информацию о подписчиках напрямую.

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

1 голос
/ 31 декабря 2011

JMS явно отделяет издателей от подписчиков.Весь смысл в том, что эти двое не должны знать или заботиться о состоянии другого.Поэтому JMS не имеет возможности делать то, что вам нужно.С другой стороны, провайдеры будут иметь специфичные для поставщика API-интерфейсы администрирования, и, как отмечает Пол, консультативные сообщения AMQ - это то, что вам нужно для Active MQ.Поскольку они зависят от поставщика, он не будет переносимым на других поставщиков и не будет совместим с JMS.Не вина AMQ, только то, что он не является частью спецификации JMS.

...