2013-04-08 2 views
-2

Я новичок в ActiveMQ, поэтому у меня возникли вопросы ... Я собираюсь сделать клиент-серверное приложение, используя activemq на стороне сервера. Все клиенты отправляют сообщения, поэтому на сервере есть одна очередь, получающая сообщения от всех клиентов. Как я понимаю, это не проблема.Monitor activemq topic

Но есть еще одна вещь ... После получения сообщения сервер работает с ним и формирует ответное сообщение для КАЖДОГО входящего сообщения, и это сообщение должно быть доставлено для ВСЕХ клиентов, а не только для отправителя. И если в настоящий момент нет связи с каким-либо клиентом, когда соединение восстанавливается, клиент должен получить весь сервер сообщений, отправленный в течение времени, когда этот клиент находился в автономном режиме (без потерь).

Начиная с изучения ActiveMQ, я нашел решение: на сервере есть определенное количество «выходных очередей», и это число равно числу клиентов. Итак, после формирования ответа серверное приложение проходит через все «выходные очереди» и помещает сообщение в каждую очередь. В этом варианте клиент EACH имеет уникальный идентификатор и прослушивает свою OWN-очередь (со всеми ответами), поэтому на сервере мы можем отслеживать, какое количество сообщений каждый клиент получил (это преимущество). Но также, я думаю, это не лучшее решение (много одинаковых объектов в очередях + добавление вручную каждого клиента на стороне сервера - это недостатки).

Узнав больше о activemq, я нашел темы и прочные подписчики. Похож на то, что мне нужно для описанной проблемы. Но теперь мой вопрос: как я могу отслеживать сообщения темы? Я попробовал посмотреть его в инструменте администратора браузера, также в jconsole, но пока не вижу эти сообщения. Является ли это возможным? И любые вопросы на будущее - использует темы для этой проблемы? Или, может быть, лучше использовать определенное количество выходных очередей, как я описал?

ответ

1

Прочные подписки - это, вероятно, путь. Но, как вы уже испытали, вам нужно пожертвовать немного оперативной прозрачностью.

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

http://activemq.apache.org/virtual-destinations