Как узнать, все ли подписчики на тему JMS ответили? - PullRequest
5 голосов
/ 08 февраля 2011

Использование HornetQ (в JBoss AS 6.0) я хотел бы настроить тему JMS, на которую могут подписаться несколько клиентов.

Производитель периодически отправляет сообщение в эту тему с адресатом для ответа, на которое должны ответить все подписчики.

У меня проблема в том, что я не совсем уверен, как проверить, что все подписчики действительно ответили.

Одним из решений может быть то, что каждый подписчик сначала отправляет сообщение в тему после подписки с ее деталями (возможно, с некоторым GUID). Производитель запоминает эти данные и использует их для проверки, все ли подписанные клиенты ответили.

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

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Вы можете использовать долговременные подписки, а затем запрашивать подписки и сообщения.
Смотри http://hornetq.sourceforge.net/docs/hornetq-2.0.0.BETA5/user-manual/en/html/management.html#d0e5742

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

1 голос
/ 09 февраля 2011

Сам JMS не поддерживает это, это слишком просто. Если вы не возражаете связать свой код с HornetQ, вы можете использовать его нативный API, чтобы выяснить это. Не идеально, но он хорошо написан и имеет читаемый исходный код, так что это не будет слишком сложно.

...