activemq-artemis - 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
的字节相加来计算的值。你可以考虑增加你的in 。global-max-size
broker.xml
你说这个分页阻止你的消费者消费消息。然而,同样值得注意的是,分页通常是由消费者不消费消息引起的,而不是相反。当消费者减速或停止时,消息会在代理中建立,它别无选择,只能开始分页。因此,您可能会同时看到这两种情况,这可能会导致归因错误。
推荐阅读
- python - 结合使用 python 消除常见列的 pandas 数据框
- python - 为什么 BeautifulSoup 找不到包含文本的标签,但我可以运行“查找”并查看 HTML 中的文本?
- php - 如何从两个表构建表,一个具有无用的唯一标识符(WordPress wp_usermeta 表)
- regex - 我如何只在正则表达式中找到换行符?
- java - 在 Intellji Idea 中生成 jar 时如何设置类路径?
- scala - 为什么scala不能将函数名直接传递给val?
- javascript - 使用位置的动画组件“to”属性的 setAttribute 无法设置
- java - 首先按值排序键值对,然后按键。(类似于基数排序)。我需要维护键值关系
- macros - 嵌套在 let 中的 if 子句在宏内未按预期工作
- python - python中的生产者-消费者队列