Java ActiveMQ在不使用JMX、JMS的情况下获取队列大小
我需要一种在不使用或的情况下获取ActiveMQ中队列大小的方法。是否存在使用ActiveMQ API获取队列大小的解决方案 JMS中没有用于查询代理统计信息的API,这与将客户机与其他代理和中间代理分离的概念背道而驰。ActiveMQ确实提供了一些您可以使用的东西,JMX是获得您想要的东西的最强大的方式,但是如果您不想直接使用JMXAPI,您可以使用基于REST的方法,该方法利用ActiveMQ嵌入的项目来支持对代理使用的公开的项目的访问 除了REST选项之外,唯一的其他方法是启用,允许您向代理发送目标消息,以使用标准JMS代码检索运行时统计信息。添加到activemq.xml。 以下是获取ActiveMQ统计信息的代码片段Java ActiveMQ在不使用JMX、JMS的情况下获取队列大小,java,activemq,Java,Activemq,我需要一种在不使用或的情况下获取ActiveMQ中队列大小的方法。是否存在使用ActiveMQ API获取队列大小的解决方案 JMS中没有用于查询代理统计信息的API,这与将客户机与其他代理和中间代理分离的概念背道而驰。ActiveMQ确实提供了一些您可以使用的东西,JMX是获得您想要的东西的最强大的方式,但是如果您不想直接使用JMXAPI,您可以使用基于REST的方法,该方法利用ActiveMQ嵌入的项目来支持对代理使用的公开的项目的访问 除了REST选项之外,唯一的其他方法是启用,允许您向代
public Long checkMessageCountOnAllBroker() throws JMSException {
MapMessage mapMessage = (MapMessage) jmsTemplate.sendAndReceive("ActiveMQ.Statistics.Broker", Session::createMessage);
return mapMessage.getLong("size");
}
这将从ActiveMq获取所有队列的大小。用于获取特定主题的静态信息
public Long checkMessageCountOnDestination() throws JMSException {
MapMessage mapMessage = jmsTemplate.sendAndReceive("ActiveMQ.Statistics.Destination.some-topic", Session::createMessage);
return mapMessage.getLong("size");
}
它将从目标主题获取统计信息谢谢,“统计代理插件”是解决方案