在ActiveMQ Artemis 2.15.0版本中,我们可以自动创建队列。默认情况下,自动删除设置为true (未更改)。我们时不时地看到下面的日志。从日志消息看,服务器似乎试图删除自动创建的队列,但失败了,因为它有1条消息。我的问题是,当队列中有消息时,为什么broker会尝试删除队列?
2020-10-22 02:48:23,599 ERROR [org.apache.activemq.artemis.core.server] AMQ224065: Failed to remove auto-created queue test:
ActiveMQIllegalStateException[errorType=ILLEGAL_STATE message=AMQ229215: Cannot delete queue test on binding test - it has 1 messages]发布于 2020-10-27 21:42:23
正如您可以想象的那样,代理有许多线程来执行许多不同的任务。完全有可能从队列中删除最后一条消息,然后代理启动删除队列的进程,同时另一个线程向队列中添加一条消息。在这种情况下,该ERROR消息将被记录。
我建议您禁用地址和队列的自动删除,或者至少将auto-delete-queues-delay和auto-delete-addresses-delay设置为非零值(例如5000)。在代理的未来版本中,默认情况下将禁用自动删除。
https://stackoverflow.com/questions/64552572
复制相似问题