如果命中 global-max-size 地址被阻塞

If global-max-size is hit address is blocked

我的broker.xml里有这个:

...
<global-max-size>1Mb</global-max-size>
...
<address-setting match="MyQueue">
   <address-full-policy>BLOCK</address-full-policy>
   <max-size-bytes>50Mb</max-size-bytes>
</address-setting>
...

使用此配置,我观察到 MyQueue 会在 global-max-size 被命中时立即被阻止:

2021-07-07T17:53:16.678+02 WARN [org.apache.activemq.artemis.core.server] AMQ222038: Starting paging on address 'OtherQueue'; size is currently: 351,993 bytes; max-size-bytes: -1; global-size-bytes: 1,066,966
2021-07-07T17:53:16.704+02 WARN [org.apache.activemq.artemis.core.server] AMQ222183: Blocking message production on address 'MyQueue'; size is currently: 662,049 bytes; max-size-bytes on address: 52,428,800, global-max-size is 1,100,882

这是按设计工作的吗?如果 global-max-size 被击中,所有生产者都会被阻止吗?

这是按设计工作的。当您点击 global-max-size 时,将在地址上强制执行 address-full-policy(即在您的情况下为 BLOCK)。有关详细信息,请参阅 the documentation

就其价值而言,设置<global-max-size>1Mb</global-max-size><max-size-bytes>50Mb</max-size-bytes>没有多大意义。