ActiveMQ - ограничить количество подписок - PullRequest
1 голос
/ 03 июля 2019

Я столкнулся с проблемой, когда один клиент подписался (по ошибке) 4000+ раз на одну и ту же тему (через ~ 100 подключений). Это привело к тому, что ресурс ActiveMQ стал очень низким по ресурсам и стал очень медленным.

Есть ли какой-нибудь механизм для предотвращения этого? Как один клиент / пользователь может подписаться на X раз максимум по теме?

1 Ответ

0 голосов
/ 03 июля 2019

Я не знаю ни одной функции в ActiveMQ 5.x, которая бы обеспечивала нужную вам функцию.

Тем не менее, ActiveMQ Artemis имеет ограничения ресурсов для каждого пользователя . Поэтому, если ваш брокер защищен таким образом, что клиенты должны соединяться с именем пользователя и паролем (что и должно быть), вы можете принудительно установить ограничение на количество подключений для использования, используя что-то вроде этого в broker.xml:

<resource-limit-settings>
   <resource-limit-setting match="myUser">
      <max-connections>5</max-connections>
   </resource-limit-setting>
</resource-limit-settings>

Стоит также отметить, что когда потребитель создает подписку на тему, создается очередь, в которой хранятся все сообщения для подписки. Вы можете ограничить количество очередей, которые пользователь может создать (и, следовательно, количество подписок), используя параметр конфигурации max-queues, например ::

<resource-limit-settings>
   <resource-limit-setting match="myUser">
      <max-queues>3</max-queues>
   </resource-limit-setting>
</resource-limit-settings>
...