Spring Boot SockJS поверх Stomp и Apache Artemis

У меня есть приложение чата, которое я создал с помощью Spring Boot с SockJS через STOMP, поддерживаемый и внешним брокером ActiveMQ. Моя проблема в том, что после примерно 4000 клиентских подключений и 10000 пунктов назначения ActiveMQ ActiveMQ вылетает из-за нехватки памяти, связанной с KahaDB. Я хотел бы переключиться на Apache Artemis, поскольку в блоге упоминалось, что он работает лучше, чем ActiveMQ и обрабатывает гораздо больше клиентских подключений, а также реализует неблокирование. Я надеялся просто заменить ActiveMQ на Artemis, однако я вижу, что клиенты подключаются и подписаться на темы и очереди, но они не получают сообщения через 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>

Любая помощь приветствуется.

Заранее спасибо.


person Paul Gobin    schedule 07.02.2017    source источник


Ответы (1)


Для artemis вам следует попробовать последнюю доступную версию (1.5.2 на момент написания этой статьи).

Возможно, вам потребуется изменить имя адреса и имя очереди соответственно с Artemis 1.x. (jms.queue и jms.topic) префиксы.

В предстоящем выпуске 2.0 модель адреса больше не требует префиксов, но в текущей версии вы можете столкнуться с проблемой определения префиксов в вашем приложении.

Не стесняйтесь начинать обсуждение в списке пользователей, где участники наиболее активны.

person Clebert Suconic    schedule 07.02.2017
comment
Спасибо Селеберту за быстрый ответ. Очень признателен. Я использую последнюю версию 1.5.2. Я попробую это с предикатом jms.queue и jms.topic. Есть идеи, когда выйдет 2.0? Спасибо - person Paul Gobin; 08.02.2017
comment
Это как в любом программном проекте ... мы хотим сделать это за 1 месяц (со дня, когда я пишу это, для будущих зрителей) ... но вы знаете, как это происходит ... Я думаю, это будет февраль или матч / 2017 .. на основе JIRA, которую еще предстоит сделать ... но это мой личный прогноз. - person Clebert Suconic; 08.02.2017
comment
Большое спасибо за обновление, буду следить за выпуском 2.0. - person Paul Gobin; 09.02.2017
comment
На самом деле сегодня в списке разработчиков есть сообщение об этом: Для будущих ссылок: activemq.2283324.n4.nabble.com/ - person Clebert Suconic; 10.02.2017
comment
Спасибо, Клеберт - с нетерпением жду релиза 2.0. - person Paul Gobin; 11.02.2017
comment
Привет, ребята! Есть ли корреляция между количеством назначений (очередей / адресов), созданных на Artemis, и производительностью? Существует потенциал для более чем 50 000 пунктов назначения, и мне было интересно, стоит ли беспокоиться об этом с точки зрения производительности и масштабируемости? Спасибо - person Paul Gobin; 14.02.2017
comment
Я бы, вероятно, поиграл более чем с одним брокером. 50K, кажется, вам понадобится много клиентов с большим количеством сокетов ... за пределами возможностей оборудования. - person Clebert Suconic; 22.02.2017
comment
спасибо Клеберту. Я изучу кластеризацию Artemis и передам свои службы весенней загрузки чата с балансировщиком нагрузки или кубернетами с докером, чтобы распределить нагрузку по горизонтали. Я обновлю эту ветку, как это работает. Спасибо и спасибо за отличную работу, которую вы, ребята, делаете с Artemis! - person Paul Gobin; 22.02.2017
comment
Я не сказал обязательно кластеризацию. просто держите их отдельно. нет необходимости кластеризоваться. Просто используйте несколько экземпляров. Если вам не нужны темы. Почему бы тебе не открыть новую тему? - person Clebert Suconic; 22.02.2017
comment
Могу ли я проголосовать или принять вопрос? :) Приятно набирать очки :) - person Clebert Suconic; 02.03.2017
comment
Привет, ребята, я использовал Artemis 1.5.3, и моя схема адресации была jms.topic.xxx для pub-sub и jms.queue.xxx для точки-точки, и все работало отлично. Однако я перехожу на версию 2.1.0, и jms.topic.xxx работает как двухточечная маршрутизация, то есть не все подписчики получают сообщение. Раньше я использовал ActiveMQ, и их префиксы именования были /topic.xxx и /queue.xxx. Я также попытался установить конфигурацию многоадресной рассылки в broker.xml для activemq. apache.org/artemis/docs/2.1.0/address-model.html, но Артемис жалуется и не запускается. Любая помощь приветствуется. - person Paul Gobin; 02.06.2017