2012-10-31 1 views
0

Если я отправляю кучу сообщений в тему, где абонент очень медленный. «Размер очереди» на вкладке «JMS Resources» в geronimos остается 0. Если я использую JMS Queue вместо темы, я вижу, что размер увеличивается. В обоих сценариях все сообщения доставляются.JMS Размер очереди очереди всегда 0

Почему «размер очереди» в теме всегда отображается 0?

ответ

2

Тема представляет модель публикации-подписки, и сообщения исчезнут, когда абонент не прослушивает. Поэтому запрос по размеру темы всегда равен нулю.

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

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

См. Также Basic JMS API concepts от Oracle.

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

+0

Возможно, я не был четко осведомлен о моем вопросе, но я действительно хотел знать: в сценарии, где задействованы темы и слушатели, сообщения не исчезают, если потребителю/слушателю требуется больше времени для обработки сообщение, которое требуется производителю для его создания. Сообщение о теме получает «queued», я хотел знать, где я могу посмотреть, сколько сообщений поставлено в очередь для конкретного потребителя через JMS. – atx

+0

Хм, я не очень хорошо знаю Geronimo, но он использует ActiveMQ. Вы проверили ресурс JMX, возможно, это «подсчет потока»? http://activemq.apache.org/how-do-i-find-the-size-of-a-queue.html и http://activemq.apache.org/jmx.html – Dag

 Смежные вопросы

  • Нет связанных вопросов^_^