代理网络充斥着未使用的ActiveMQ.Advisory.TempQueue消息

代理网络充斥着未使用的ActiveMQ.Advisory.TempQueue消息,activemq,Activemq,我目前正在调查我的代理网络中的内存问题。 根据JConsole,当代理开始阻止消息时,ActiveMQ.Advisory.TempQueue将占用99%的配置内存 有关配置的一些详细信息 大多数情况下的默认配置。一个打开的stomp+nio连接器,一个打开的openwire连接器。所有代理都形成一个超立方体(一个连接到其他代理的单向连接(更容易自动生成))。没有流量控制 问题详细信息 webconsole显示了30个使用者(6个代理,一个使用者,其余是使用java连接器的客户端)的1974234

我目前正在调查我的代理网络中的内存问题。 根据JConsole,当代理开始阻止消息时,ActiveMQ.Advisory.TempQueue将占用99%的配置内存

有关配置的一些详细信息

大多数情况下的默认配置。一个打开的stomp+nio连接器,一个打开的openwire连接器。所有代理都形成一个超立方体(一个连接到其他代理的单向连接(更容易自动生成))。没有流量控制

问题详细信息

webconsole显示了30个使用者(6个代理,一个使用者,其余是使用java连接器的客户端)的1974234条排队消息和45345条排队消息。据我所知,出列计数不应小于:排队*消费者。因此,在我的情况下,一大堆的建议并没有被使用,而是开始填满我的临时消息空间。(目前我配置了几个gb作为临时空间)

由于没有客户机主动使用临时队列,我觉得这很奇怪。看了临时队列之后,我更加困惑了。大多数消息如下所示(msg.toString):

看到这些消息后,我有几个问题:

  • 我是否正确理解消息的来源是stomp连接
  • 如果是,stomp连接如何创建临时队列
  • 有没有一个简单的原因可以解释为什么不使用这些建议 目前,我通过停用网络连接器上的bridgeTempDestinations属性来推迟问题的解决。这样,消息不会传播,填充临时空间的速度会慢得多。如果我无法修复这些消息的来源,我至少希望阻止它们填充存储:

  • 我可以在一段时间后删除这些未使用的邮件吗
  • 这会有什么后果

  • 更新:我对我的集群进行了更多的监控,发现这些消息已被使用。它们被排队并调度,但消费者(其他集群节点,如使用activemq库的java消费者)无法确认消息。因此,它们会停留在已发送消息队列中,而此队列会不断增长。

    如果您没有使用此咨询主题,您可能需要按照网站上的建议将其关闭


    删除建议消息不会产生任何后果-因为这些消息只是用于系统运行状况分析和统计的消息。

    这是一个旧线程,但如果有人遇到同样的问题,您可能希望查看此帖子:

    该链接中的问题听起来类似,即临时队列产生大量的建议消息。在我的例子中,我们使用临时队列来实现同步请求/响应消息传递,但是大量的建议消息导致ActiveMQ将大部分时间花在GC上,并最终抛出一个超出GC开销限制的异常。这是在v5.11.1上实现的。即使我们关闭了连接、会话、生产者、消费者,临时队列也不会被GC’d,并将继续接收建议消息


    解决方案是在清理其他资源时显式删除临时队列(请参见)

    您的队列中是否确实包含建议消息?或者它们是主题?如果它们是队列-您有特定的消费者吗?它们是主题,但代理网络节点和java资源适配器默认在TempQueue目标上侦听。嘿@Laures,我有一个类似的问题。1.你是如何监控这种情况的?2.你最终是如何解决的?我在一个代理网络中工作,所以我需要它们,除非我想手动配置每个消息路由。事实上,这个答案帮助我摆脱了咨询主题(总是有很高的消息数量,并且随着时间的推移不断增加)。在我完成了链接讨论中的建议之后,我终于在JMX控制台中看不到任何这些主题和暂停的消息了
    ActiveMQMessage {commandId = 0, responseRequired = false, messageId = ID:srv007210-36808-1318839718378-1:1:0:0:203650, originalDestination = null, originalTransactionId = null, producerId = ID:srv007210-36808-1318839718378-1:1:0:0, destination = topic://ActiveMQ.Advisory.TempQueue, transactionId = null, expiration = 0, timestamp = 0, arrival = 0, brokerInTime = 1318840153501, brokerOutTime = 1318840153501, correlationId = null, replyTo = null, persistent = false, type = Advisory, priority = 0, groupID = null, groupSequence = 0, targetConsumerId = null, compressed = false, userID = null, content = null, marshalledProperties = org.apache.activemq.util.ByteSequence@45290155, dataStructure = DestinationInfo {commandId = 0, responseRequired = false, connectionId = ID:srv007210-36808-1318839718378-2:2, destination = temp-queue://ID:srv007211-47019-1318835590753-11:9:1, operationType = 1, timeout = 0, brokerPath = null}, redeliveryCounter = 0, size = 0, properties = {originBrokerName=broker.coremq-behaviortracking-675-mq-01-master, originBrokerId=ID:srv007210-36808-1318839718378-0:1, originBrokerURL=stomp://srv007210:61612}, readOnlyProperties = true, readOnlyBody = true, droppable = false}