ActiveMQ Artemis 2.28.0未遵循broker.xml队列删除与配置设置
ActiveMQ Artemis 2.28.0配置未生效问题
环境
- 运行版本:ActiveMQ Artemis 2.28.0
- 配置文件:
broker.xml(仅保留核心相关配置,已验证配置文件有效,例如禁用auto-create-queues会触发预期错误)
核心配置
<configuration xmlns="urn:activemq" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xi="http://www.w3.org/2001/XInclude" xsi:schemaLocation="urn:activemq /schema/artemis-configuration.xsd"> <core xmlns="urn:activemq:core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:activemq:core "> <address-settings> <!-- if you define auto-create on certain queues, management has to be auto-create --> <address-setting match="activemq.management#"> <dead-letter-address>DLQ</dead-letter-address> <expiry-address>ExpiryQueue</expiry-address> <redelivery-delay>0</redelivery-delay> <!-- with -1 only the global-max-size is in use for limiting --> <max-size-bytes>-1</max-size-bytes> <message-counter-history-day-limit>10</message-counter-history-day-limit> <address-full-policy>PAGE</address-full-policy> <auto-create-queues>true</auto-create-queues> <auto-create-addresses>true</auto-create-addresses> </address-setting> <!--default for catch all--> <address-setting match="#"> <dead-letter-address>DLQ</dead-letter-address> <expiry-address>ExpiryQueue</expiry-address> <redelivery-delay>0</redelivery-delay> <max-size-bytes>-1</max-size-bytes> <max-size-messages>-1</max-size-messages> <page-size-bytes>10M</page-size-bytes> <max-read-page-messages>-1</max-read-page-messages> <max-read-page-bytes>20M</max-read-page-bytes> <message-counter-history-day-limit>10</message-counter-history-day-limit> <address-full-policy>PAGE</address-full-policy> <auto-create-queues>true</auto-create-queues> <auto-create-addresses>true</auto-create-addresses> <auto-delete-queues>false</auto-delete-queues> <auto-delete-addresses>false</auto-delete-addresses> <auto-delete-created-queues>false</auto-delete-created-queues> <default-exclusive-queue>false</default-exclusive-queue> <default-max-consumers>-1</default-max-consumers> </address-setting> </address-settings> <address-queue-scan-period>-1</address-queue-scan-period> <addresses> <address name="DLQ"> <anycast> <queue name="DLQ" /> </anycast> </address> <address name="ExpiryQueue"> <anycast> <queue name="ExpiryQueue" /> </anycast> </address> </addresses> </core> </configuration>
预期行为
- 队列按需自动创建
- 消费者停止监听后,队列与地址仍保留
- 队列可支持多个消费者加入
实际观察到的行为
- 创建multicast消费者时队列自动创建
- 创建的队列
maxConsumerCount为1,与default-max-consumers=-1的设置不符 - 关闭会话后队列与地址被删除,与
auto-delete-queues=false的设置不符
已尝试添加address-queue-scan-period=-1作为临时解决方案,但无效果。
相关日志
创建队列日志
2023-06-15 15:56:05,251 DEBUG [org.apache.activemq.artemis.core.server.plugin.impl] AMQ843006: beforeCreateQueue called with queueConfig: QueueConfiguration [id=null, name=C7GN9YMV1P53I5PI.receiver, address=linda.acc.train.behaviour.12, routingType=MULTICAST, filterString=SubscriptionId='C7GN9YMV1P53I5PI' OR SubscriptionId IS NULL, durable=null, user=admin, maxConsumers=1, exclusive=false, groupRebalance=false, groupRebalancePauseDispatch=false, groupBuckets=-1, groupFirstKey=null, lastValue=false, lastValueKey=null, nonDestructive=false, purgeOnNoConsumers=false, enabled=true, consumersBeforeDispatch=0, delayBeforeDispatch=-1, consumerPriority=null, autoDelete=false, autoDeleteDelay=0, autoDeleteMessageCount=0, ringSize=-1, configurationManaged=null, temporary=null, autoCreateAddress=true, internal=null, transient=null, autoCreated=null]
关闭消费者日志
2023-06-15 15:56:35,559 INFO [org.apache.activemq.artemis.core.server.plugin.impl] AMQ841006: closed consumer ID: 0, with consumer Session: 5ef8b4b4-0b84-11ee-be26-d6283bc2e653, failed: false 2023-06-15 15:56:35,568 DEBUG [org.apache.activemq.artemis.core.server.plugin.impl] AMQ843007: beforeDestroyQueue called with queueName: C7GN9YMV1P53I5PI.receiver, session: ServerSessionImpl(), checkConsumerCount: true, removeConsumers: false, autoDeleteAddress: true
疑问
这是ActiveMQ Artemis的bug,还是我对配置参数的理解有误?
内容的提问来源于stack exchange,提问作者Michiel
相关产品推荐
相关产品推荐

