Я работаю с приложением Spring Boot, которое использует JmsTemplate
Spring для отправки сообщений в очередь ActiveMQ Artemis. Если дисковое пространство заполнено и очередь блокируется, то любые JmsTemplate
вызовы convertAndSend
будут зависать вечно. Для меня было бы лучше вместо этого выдать ошибку.
ActiveMQ имеет конфигурацию для этого, то есть sendFailIfNoSpace
:
<systemUsage>
<systemUsage sendFailIfNoSpace="true">
<memoryUsage>
<memoryUsage limit="20 mb"/>
</memoryUsage>
</systemUsage>
</systemUsage>
Есть ли способ настроить очередь Artemis чтобы сделать это также?
Некоторые из особенностей приложения:
Сконфигурированный Spring JmsTemplate
вызов:
jmsTemplate.convertAndSend("just another message");
У брокера Artemis есть настройки по умолчанию для любой очереди:
<address-setting match="#">
<dead-letter-address>DLQ</dead-letter-address>
<expiry-address>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-queues>true</auto-create-queues>
<auto-create-addresses>true</auto-create-addresses>
<auto-create-jms-queues>true</auto-create-jms-queues>
<auto-create-jms-topics>true</auto-create-jms-topics>
</address-setting>