首页 > 解决方案 > 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

这对我们来说很重要,因为我们已经分析了这种分页导致我们队列中的消息无法被消费。

标签: activemq-artemis

解决方案


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

鉴于日志消息,我推测您已经达到了通过将所有地址global-size-bytes的字节相加来计算的值。你可以考虑增加你的in 。global-max-sizebroker.xml

你说这个分页阻止你的消费者消费消息。然而,同样值得注意的是,分页通常由消费者不消费消息引起的,而不是相反。当消费者减速或停止时,消息会在代理中建立,它别无选择,只能开始分页。因此,您可能会同时看到这两种情况,这可能会导致归因错误。


推荐阅读