Artemis中ActiveMQ 5.x sendFailIfNoSpace设置的等效项是什么?

问题描述 投票:0回答:1

我正在使用Spring Boot应用程序,该应用程序使用Spring的JmsTemplate将消息发送到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>
spring-jms activemq-artemis
1个回答
0
投票

[目前在ActiveMQ Artemis中没有与sendFailIfNoSpace等效的文件。如the documentation中所述,当超出max-disk-usage时,代理将阻止:

系统将对磁盘执行扫描,以确定磁盘是否超出配置的限制。这些通过百分比max-disk-usage进行配置。一旦达到该限制,任何消息将被阻止。 (除非协议不支持在这种情况下的流控制,否则将引发异常并断开那些客户端的连接)。

要清楚,客户端呼叫不会被阻止[[forever。它们将被阻塞,直到释放磁盘上足够的空间。

© www.soinside.com 2019 - 2024. All rights reserved.