JBoss EAP 7.2 ActiveMQ默认分页未生效问题及配置咨询
JBoss EAP 7.2 ActiveMQ Artemis 分页配置问题解答
问题1:配置分页模式时,address-setting的name需设置为目标名称还是其他值?
address-setting的name属性必须填写JMS队列对应的核心地址(core address),而非直接用<jms-queue>的名称。JBoss EAP 7.2内置的ActiveMQ Artemis中,JMS队列会自动映射到格式为jms.queue.队列名称的核心地址。
举个例子:如果你的JMS队列定义为:
<jms-queue name="OrderQueue"> <entry name="java:/jms/queue/OrderQueue"/> </jms-queue>
那么对应的address-setting配置应该是:
<address-setting name="jms.queue.OrderQueue"> <address-full-policy>BLOCK</address-full-policy> <!-- 其他分页相关配置 --> </address-setting>
如果需要批量配置所有JMS队列,可以用通配符jms.queue.*作为name值。你之前直接用<jms-queue>名称或关联的IBM MQ队列名称,都会导致配置无法匹配到正确的地址,自然不会生效。
问题2:为何不存在分页目录且ActiveMQ未默认启用分页?
官方文档说的「分页默认启用」,是指分页功能本身处于开启状态,但分页只有在触发阈值时才会实际写入数据到分页目录,默认阈值配置如下:
max-size-bytes:地址允许存储的最大消息总大小,默认100MBpage-size-bytes:每次分页写入的文件大小,默认10MB
只有当队列中消息的总大小超过max-size-bytes时,ActiveMQ Artemis才会开始将超出部分的消息写入分页目录。如果你的队列消息总量没达到100MB,分页目录自然不会有数据。
另外,你之前设置address-full-policy=BLOCK未生效,核心原因还是address-setting的name配置错误,导致规则没有应用到目标队列上。
额外排查建议
- 用JBoss CLI验证配置是否生效:执行
/subsystem=messaging-activemq/server=default/address-setting=jms.queue.你的队列名:read-resource,查看返回的配置是否符合预期 - 检查队列实际消息大小:在管理控制台或CLI中查看队列的
message-size-bytes指标,确认是否达到max-size-bytes阈值 - 确认配置文件正确性:确保修改的是启用了消息子系统的配置文件(如
standalone-full.xml,默认standalone.xml可能未加载消息子系统)
内容的提问来源于stack exchange,提问作者Sangreal
相关产品推荐
相关产品推荐

