ActiveMQ - ограничение количества ожидающих сообщений в очереди без влияния на производителя - PullRequest
0 голосов
/ 08 сентября 2018

ActiveMQ 5.15.4

Контекст: продюсер, с которым я работаю, публикует множество разных очередей.

Вещи, которые я пробовал:

1.

<policyEntry queue=">" producerFlowControl="true" memoryLimit="10 mb">
</policyEntry>

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

2.

<policyEntry queue=">" producerFlowControl="false" memoryLimit="10 mb">
</policyEntry>

Кажется, что размер очереди не ограничен.

3.

Я пытался использовать messageEvictionStrategy и pendingMessageLimitStrategy , но они не работают для очередей, только для тем.

Я пропускаю какую-то другую возможную стратегию?

1 Ответ

0 голосов
/ 08 сентября 2018

Вам необходимо использовать значение Time To Live в сообщениях, чтобы контролировать, как долго они остаются в очереди, в противном случае брокер либо заблокирует производителя с помощью управления потоком, либо выгрузит сообщения на диск, если вы отключите его. Очереди, как правило, не предназначены для обмена сообщениями фиксированного размера, поскольку в очереди предполагается, что содержимое является важным и не должно быть отброшено, если отправитель не разрешает это через TTL.

...