Когда ActiveMQ Artemis очищает карту идентификатора группы - PullRequest
0 голосов
/ 06 января 2020

При группировании сообщений с использованием свойства JMSXGroupId брокеру необходимо сохранять «карту» значений groupId и потребителей, чтобы гарантировать, что все сообщения с одинаковым JMSXGroupId отправляются одному и тому же потребителю.

Мы заметил, что размер группы на сервере уменьшается только тогда, когда мы отключаем потребителей.

В счастливом случае наши потребители живут долго, потому что нет причин закрывать соединение прослушивателя сообщений. Это приводит к увеличению числа групп. Есть ли способ настроить срок действия групповых идентификаторов? Или другой способ уменьшить групповую карту без необходимости повторного подключения потребителей в обычное время?

1 Ответ

0 голосов
/ 06 января 2020

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

Во-первых, вы можете использовать группу "корзины". Это существенно уменьшает размер карты за счет использования сегментов вместо отображения 1: 1 для идентификатора группы / потребителя. Дополнительные сведения и информация о конфигурации доступны в документации .

Во-вторых, вы можете настроить LOCAL grouping-handler с group-timeout, который будет удалять записи карты, если идентификатор группы не установлен. не используется в течение заданного времени. Например:

<grouping-handler name="my-grouping-handler">
   <type>LOCAL</type>
   <group-timeout>60000</group-timeout>
</grouping-handler>

При такой конфигурации любой идентификатор группы, который не используется в течение минуты (т. Е. 60 000 миллисекунд), будет удален.

В-третьих, вы можете вручную закрыть группу с помощью установив для свойства JMSXGroupSeq последнего сообщения в группе значение -1. Это также обсуждается в документации .

...