【发布时间】:2020-03-11 21:34:04
【问题描述】:
我正在使用 Spring Boot 应用程序,该应用程序使用 Spring 的 JmsTemplate 将消息发送到 ActiveMQ Artemis 队列。如果磁盘空间已满且队列阻塞,则任何对convertAndSend 的JmsTemplate 调用将永远挂起。对我来说最好是它给出一个错误。
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>
【问题讨论】:
标签: spring-jms activemq-artemis