Apache JMeter:如何使用单个JMS Publisher

时间:2018-01-15 16:26:59

标签: jmeter jms

我使用Apache JMeter进行负载测试JMS使用者。我的测试计划是将消息直接发布到JMS主题,我的MDB将从中读取消息并进行处理。

我有一个要求,每个线程发送消息如下:

  1. 具有唯一sessionID的1会话消息。

  2. 与上述会话对应的10条请求消息。此处每条消息必须具有唯一的requestID。

  3. 我的消息是JSONObjects。

    目前,在我的测试计划中,我创建了11-JMS发布者(1个用于会话,10个用于请求)来发送消息。我用200个线程运行测试10分钟。最长时间约为6000毫秒,这是巨大的。

    问题:

    1. 有没有办法使用单个JMS Publisher发送多条消息? 注意:我不能使用"消息数量来汇总",因为每条消息都应该有唯一的ID。

    2. 每个JMS Publisher是否都创建了JMS连接,即使所有JMS连接都作为单个线程的一部分运行?如果是,请建议如何避免。

    3. 期待听取专家的意见。

      先谢谢。

1 个答案:

答案 0 :(得分:0)

作为ThreadListener.streadStarted()方法的一部分,正在为每个线程(虚拟用户)建立连接,因此您可以使用单个JMS采样器在循环中发送多个消息。当虚拟用户完成所有采样器执行时,正在关闭连接。

请记住,您的测试应该切合实际,并尽可能复制系统的生产使用情况。每个JMeter线程(虚拟用户)需要代表一个Publisher,所以你的想法是不要浪费时间,你需要证明你的应用程序是否能够每单位时间处理X消息,如果没有 - 什么阻止它从表现得足够快。

查看Building a JMS Testing Plan - Apache JMeter文章,了解有关使用JMeter进行消息队列负载测试的一些提示和技巧