2013-05-29 1 views
3

У меня есть следующая ситуация, которая влияет на наш брокер ActiveMQ 5.8.Activemq STOMP: обнаружение и очистка мертвых незащищенных подписчиков

Несколько скриптов Perl на рабочей станции Windows, подключенных к ActiveMQ с использованием STOMP и подписанных (небезопасных) на различные темы. Ошибка питания на рабочей станции.

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

Есть ли способ настроить ActiveMQ так, чтобы соединения подписчиков «нежить», подобные этим, в конечном итоге очищались автоматически?

ответ

0

Несмотря на то, что предыдущий ответ в основном верен, ActiveMQ предоставляет решения для транспорта STOMP на брокере для подключения к сердцу, даже если клиент подключается к STOMP v1.0. I blogged об этом некоторое время назад, когда был выпущен ActiveMQ v5.6, см. Раздел о конфигурации пульса STOMP 1.0 по умолчанию. Другой вариант - установить tcp keepAlive для транспортировки и настроить вашу ОС на более короткий интервал проверки по умолчанию, по умолчанию обычно около двух часов.

+0

Я прочитал ваше сообщение в блоге, основная часть которого заключается в том, что коннектор должен быть настроен. Likestomp: //0.0.0.0: 0? Transport.defaultHeartBeat = 5000,0 – kamorrissey

+0

Я прервался, прежде чем заканчивать свой предыдущий комментарий. URI соединителя, такой как пример, приведенный для 'stomp: //0.0.0.0: 0? Transport.defaultHeartBeat = 5000,0', должен отключить соединение, которое простаивает более 5000 миллисекунд. Я собираюсь попробовать это. Если это сработает, это именно то решение, на которое я надеялся. – kamorrissey

+0

Я попробовал рекомендацию выше, но она, похоже, не работала. Я изменил коннектор в моем 'activemq.xml' как' 'и перезапустил ActiveMQ. Затем я запустил скрипт Perl, который подписывается на некоторые подстановочные темы. Я говорю, что количество потребителей растет по соответствующим темам, как я ожидал. По словам веб-консоли, я получаю медленные потребительские рекомендации, и использование памяти растет. Но через 20 минут количество потребителей не упало, а использование моей памяти по-прежнему велико. – kamorrissey

0

Хотя Stomp 1.1+ поддерживает Heartbeating, Active MQ в настоящее время не поддерживает inactive consumer detection для Stomp. (обычно достигается с помощью wireFormat.maxInactivityDuration).

Be Careful: 
These values are currently not supported but are planned for a later release 

ActiveMQ поддерживает его для Openwire. i, e после установленной продолжительности, потребитель будет считаться DEAD!

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