ActiveMQ Artemis 中的分页模式

Paging mode in ActiveMQ Artemis

据我了解,如果地址超过定义的大小,将对其进行分页。目前我们遇到寻呼,但不是在已知地址(队列)上。它似乎是 ActiveMQ 的内部队列?是否可以理解ActiveMQ在这里分页的是什么地址?

WARN [org.apache.activemq.artemis.core.server] AMQ222038: Starting paging on address '$.artemis.internal.my-cluster.fec50662-55c7-11eb-91d1-005056903119'; size is currently: 25,238,532 bytes; max-size-bytes: -1; global-size-bytes: 524,357,417

这对我们很重要,因为我们已经分析过这种分页导致无法使用我们队列中的消息。

名为 $.artemis.internal.my-cluster.fec50662-55c7-11eb-91d1-005056903119 的地址和相关队列用于集群内通信。当消息需要从一个节点移动到另一个节点时,它们被发送到这个地址,然后通过内部集群桥转发到另一个代理。

根据日志消息,我推测您已经达到 global-size-bytes,这是通过将 所有 地址的字节相加计算得出的。您可以考虑在 broker.xml.

中增加 global-max-size

您说此分页阻止您的消费者使用消息。但是,还值得注意的是,分页通常 由不使用消息的消费者引起 ,而不是相反。当消费者放慢速度或停止时,消息会在代理中累积,它别无选择,只能开始分页。因此,您可能会同时看到这两种情况,这可能会导致错误归因。