我正在使用JMeter为我们的应用程序运行性能测试,并且在ActiveMQ队列上以事件的形式进行了一些异步处理。我想在记录测试的统计信息之前等待ActiveMQ队列为空。有没有办法做到这一点?
我已经在JMeter 2.10中探索了JMS生产者/消费者,但他们消耗了队列中的消息,这不是我想要的,因为它修改了应用程序的原始流程。有没有办法监视队列的耗尽而不消耗ActiveMQ的消息?
我正在使用ActiveMQ 5.8和JMeter 2.10
答案 0 :(得分:1)
您可以使用MBean获取该队列中的待处理消息
"org.apache.activemq:BrokerName=host1,Type=Queue,Destination=dest1"
attribute: "QueueSize"
每隔几秒检查一次并且值不超过零,您就可以开始记录统计数据了。
答案 1 :(得分:1)
我能够使用HTTP请求监视ActiveMQ以轮询ActiveMQ Web控制台并以XML格式获取所有队列的状态。之后我使用XPATH来提取我感兴趣的队列的大小。下面的快照显示了我最终能够使用的配置。我使用的XPATH表达式是
/queues/queue[@name='${queueName}']/stats/@size
我要做的另一件事是设置基本的HTTP身份验证,以便能够连接到ActiveMQ Web控制台。
如果在服务器上启用JMX但默认情况下未启用Jess,则Mahesh的MBean解决方案也应该有效。
我已详细记录了here
答案 2 :(得分:0)
您可以创建一个简单的Java类来使用队列中的所有消息。 JMeter可以在测试之前运行它。