Размер очереди темы JMS всегда равен 0

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

Почему «Размер очереди» темы всегда показывает 0?


person atx    schedule 31.10.2012    source источник


Ответы (1)


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

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

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

См. также Основные концепции JMS API от Oracle.

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

person Dag    schedule 31.10.2012
comment
Возможно, я не совсем ясно выразил свой вопрос, но я действительно хотел знать следующее: в сценарии, где задействованы темы и доступен слушатель, сообщения не исчезают, если потребителю/слушателю требуется больше времени для обработки сообщения, чем для его создания требуется производитель. Сообщение темы ставится в очередь. Я хотел знать, где я могу посмотреть, сколько сообщений поставлено в очередь для конкретного потребителя через JMS. - person atx; 27.08.2014
comment
Хм, я плохо знаю Geronimo, но он использует ActiveMQ. Вы проверили ресурс JMX, возможно, это счетчик в полете? activemq.apache.org/how- do-i-find-the-size-of-a-queue.html и activemq. apache.org/jmx.html - person Dag; 27.08.2014