提问者:小点点

ActiveMQ Artemis临时队列


我正在使用Spring的JmsTemplate的简单测试项目,它发送同步消息:

jmsTemplate.sendAndReceive(...)

JmsTemplate的代码片段来执行此操作:

Message requestMessage = messageCreator.createMessage(session);
responseQueue = session.createTemporaryQueue();
producer = session.createProducer(destination);
consumer = session.createConsumer(responseQueue);
requestMessage.setJMSReplyTo(responseQueue);
if (logger.isDebugEnabled()) {
    logger.debug("Sending created message: " + requestMessage);
}
doSend(producer, requestMessage);
return receiveFromConsumer(consumer, getReceiveTimeout());

所有工作正常,但当我要去Jolokia控制台时,我可以在地址级别看到我所有的临时队列:

在标准ActiveMQ控制台中,不显示临时队列(删除?)。

由于我的应用程序使用了许多同步消息,列表可以快速增长。

我尽量用

<temporary-queue-namespace>temp</temporary-queue-namespace> 

<address-setting match="temp.#">
   <enable-metrics>false</enable-metrics>
</address-setting>

但是我的临时队列不在临时地址下…

是否可以在控制台中不显示临时队列?(因为当JmsTemplate收到响应或超时时,消费者被关闭,临时队列被标记为已删除)。

如果没有,如何将它们重新组合到一个地址文件夹中?

或者其他有用的东西来实现这一点。

我的应用程序处理大约30-40个队列,每天可能有1000个或更多的临时队列。ActiveMQ“Classic”在Web控制台中不显示临时队列,因此易于管理持久队列。我们计划迁移到Artemis,在我的简单测试用例中,我看到临时队列默认显示在Web控制台中,紧挨着所有其他队列,如果我有1000个或更多的临时队列,我需要向下滚动很长时间来显示我想要看到的队列。每次刷新后,滚动都会重新初始化。所以我想找到一个解决方案,将所有临时队列重新组合在一个文件夹中,如命名空间或其他解决方案。


共1个答案

匿名用户

处理大量队列和刷新JMX“树”视图的问题主要有两种方法。

  • 使用“队列”选项卡查看您感兴趣的队列,而不是JMX“树”视图。您甚至可以过滤掉临时队列,例如:在此处输入图像描述
  • 通过单击Web控制台右上角的用户图标,禁用JMX“树”视图的刷新,例如:

值得注意的是,enable-metrics仅处理与metrics插件相关的指标。将其设置为false不会禁用它们的MBean。

将来,JMX“树”可能会从Web控制台中删除,部分原因是您正在观察的问题。