Artemis执行queue stat后生成activemq.management地址,如何不重启删除?
activemq.management地址 首先得说明下这个地址的由来:当你执行artemis queue stat这类管理命令时,Artemis的管理客户端会通过核心协议和Broker交互,activemq.management是Broker用于内部管理操作的特殊地址——哪怕你在broker.xml里设置了<auto-create-addresses>false</auto-create-addresses>,Broker依然会自动创建它来支撑管理功能。
要在不重启Broker的前提下删掉这个地址,你可以按以下步骤操作:
步骤1:检查并清理关联队列
删除地址前得确保它下面没有活跃的队列。先用CLI命令查看activemq.management地址下的队列:
./artemis queue stat --user admin --password admin --url tcp://localhost:61616 --queueName activemq.management*
如果查到了相关队列(比如activemq.management.xxxxxx这类临时队列),先把这些队列删掉:
./artemis queue delete --user admin --password admin --url tcp://localhost:61616 --name <实际队列名称>
把<实际队列名称>替换成你查到的队列名,重复执行直到该地址下没有残留队列。
步骤2:删除activemq.management地址
队列清理完毕后,直接用Artemis CLI的地址删除命令移除该地址:
./artemis address delete --user admin --password admin --url tcp://localhost:61616 --name activemq.management
执行完成后,这个地址会被立即删除,完全不需要重启Broker。
额外说明:关于自动删除配置的疑问
从你提供的broker.xml来看,已经针对activemq.management#设置了<auto-delete-addresses-delay>5000</auto-delete-addresses-delay>,理论上地址不再被使用时,Broker会在5秒后自动删除它。如果没自动触发,大概率是因为还有未关闭的管理客户端连接,或者残留的关联资源,这时候手动删除就是最直接的解决办法。
另外要注意:之后如果再执行artemis queue stat这类管理命令,Broker会再次自动创建activemq.management地址,这属于正常的管理流程——除非你调整管理客户端的连接方式,但一般不建议这么做,会影响Broker的正常管理功能。
内容的提问来源于stack exchange,提问作者Bhavesh Kharwa

