Spring Boot SockJS поверх топа и Apache Artemis
У меня есть приложение чата, которое я создал с помощью Spring Boot с SockJS поверх STOMP, поддерживаемого и внешним брокером ActiveMQ. Моя проблема заключается в том, что после примерно 4000 клиентских подключений и 10000 назначений ActiveMQ ActiveMQ падает с нехваткой памяти, связанной с KahaDB. Я хотел бы перейти на Apache Artemis, поскольку в блоге упоминается, что он работает лучше, чем ActiveMQ, и обрабатывает намного больше клиентских подключений, а также реализует неблокирование. Я надеялся просто заменить ActiveMQ на Artemis, однако я вижу, что клиенты подключаются и подписаться на темы и очереди, но они не получают сообщения через Артемис.
А идеи в чем может быть проблема? Вот мои настройки в конфигурационном файле Artemis broker.xml:
<address-settings>
<!--default for catch all-->
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<!-- with -1 only the global-max-size is in use for limiting -->
<max-size-bytes>-1</max-size-bytes>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
<address-full-policy>PAGE</address-full-policy>
<auto-create-jms-queues>true</auto-create-jms-queues>
<auto-delete-jms-queues>true</auto-delete-jms-queues>
</address-setting>
</address-settings>
Любая помощь приветствуется.
Заранее спасибо.
1 ответ
С Артемидой, Вы должны попробовать последнюю доступную версию (1.5.2 на момент написания этой статьи).
Возможно, вам нужно изменить имя адреса и имя очереди соответственно с Artemis 1.x. (jms.queue и jms.topic) префиксы.
В следующем выпуске 2.0 модель адресов больше не требует префиксов, но в текущей версии вы можете столкнуться с необходимостью определения префиксов в своем приложении.
Не стесняйтесь начинать обсуждение в списке пользователей, где участники в основном активны.