Сообщения Темы удаляются из очереди после их использования подписчиком темы (AMQ 5.3.1) - PullRequest
2 голосов
/ 18 ноября 2011

У меня есть тема jms, которая может иметь 0,1,2 подписчика (это означает, что некоторые подписчики могут быть отключены или остановлены). У меня есть продюсер, который постоянно отправляет сообщения в тему, и я вижу, что сообщения помещены в очередь в теме, я вижу, что есть подписчики, и я вижу, что мои потребители получают сообщения. Но из активного веб-администратора activemq я вижу, что никакое сообщение не удалено. Также из heapdump я увидел, что с течением времени количество сообщений в теме увеличивается, но потребители потребляют их медленнее, а производитель отправляет их быстрее. Так что через некоторое время я получил исключение из неофициальной памяти.

Мой вопрос: если сообщения не исключены, означает ли это, что они находятся в теме и память увеличивается из-за увеличения их количества? Как я могу это исправить?

Копия из активного интерфейса adminmq: Имя Количество потребителей Сообщения в очереди Сообщения в очереди TEST_TOPIC 1 26490 0

1 Ответ

1 голос
/ 21 ноября 2011

По умолчанию сообщения будут храниться в хранилище постоянных данных, которое вы настроили в своем файле конфигурации, но при условии:

  • существует активная подписка на такого рода сообщения
  • существует постоянная подписка (потребитель) на такого рода сообщения.

Если у вас есть проблемы с потреблением ваших сообщений с той же (или более высокой) скоростью, с которой вы их производите, у вас есть несколько возможностей.:

  • управление потоком
  • Стратегия ограничения ожидающих сообщений (позволяет настроить максимальное количество совпавших сообщений, которые будет хранить брокердля потребителя в дополнение к его буферу предварительной выборки. Как только этот максимум достигнут, когда поступают новые сообщения, старые сообщения отбрасываются)
  • Время жизни ваших сообщений.Вы в основном устанавливаете, как долго ваши сообщения будут действительны, брокер будет отбрасывать их, когда они достигнут того времени.

В вашем случае я бы применил одну из 3 стратегий, упомянутых выше.Я бы лично пошел на второй (Стратегия ограничения ожидающих сообщений).

...