jMeter JMS测试计划
在本章中,我们将学习如何写一个简单的测试计划,测试JMS(Java消息服务)。谁不知道JMS请阅读本章之前,让自己熟悉的JMS。 JMS支持两种类型的消息:
-
点到点消息: 一般用于交易发件人期望的响应队列消息。邮件系统是完全不同于普通的HTTP请求。在HTTP中,单个用户发送一个请求并得到响应。
-
主题消息 : 发布/订阅消息被俗称为主题的消息。主题消息一般使用情况下,消息发布由生产者和消费由多个用户。
让我们来看看这些为每个测试的例子。测试JMS的先决条件是:
-
我们将在我们的例子中使用的是Apache ActiveMQ。虽然也有其他JMS服务器,如IBM的WebSphere MQ(以前称为MQSeries),TIBCO等下载 Apache网站的ActiveMQ二进制文件.
-
解压缩归档文件,请解压目录,运行以下命令从命令控制台启动 ActiveMQ 服务器:
.\bin\activemq start
可以验证,如果 ActiveMQ 服务器已经开始在以下地址 http://localhost:8161/admin/ 访问管理界面。如果要求进行身份验证输入用户ID和密码为admin。屏幕将类似于如下:
-
现在复制activemq-all-x.x.x.jar(XXX的版本而定)从ActiveMQ的解压目录 /home/manisha/apache-jmeter-2.9/lib.
通过上述的设置,让我们构建的测试计划:
构建一个JMS点到点的测试计划
现在,让我们写一个JMeter测试计划,测试JMS点到点对点消息传递解决方案。测试设置1个线程组及1个线程或用户发送2条消息通过请求队列。
首先,让我们启动JMeter /home/manisha/apache-jmeter-2.9/bin/jmeter.sh.
添加用户
现在,创建一个线程组,右键点击 Test Plan > Add> Threads(Users)> Thread Group. 根据测试计划节点将添加线程组。命名此主题组为 JMSTestPlan-PointtoPoint.
我们将改变循环次数为2。其余的线程组的默认属性将被保留。这意味着,一个线程或用户发送一个线程组各2条消息通过请求队列。
加入JMS的点到点取样
现在,我们已经定义了我们的用户,它是时间来定义,他们将要执行的任务。开始采样JMS点到点,点到点元素加入 (Add > Sampler > JMS Point-to-Point). 然后,选择JMS树中的点到点取样元素。以下属性进行更改的JMS点到点取样元素:
属性 | 值 | 描述 |
---|---|---|
QueueuConnectionFactory | ConnectionFactory | 这是默认JNDI条目内ActiveMQ连接工厂。 |
JNDI Name Request Queue | Q.REQ | JMeter JNDI名称使连接工厂和队列之间的连接。 |
JNDI Name Receive Queue | Q.REQ | JMeter JNDI名称使连接工厂和队列之间的连接。我们都使用相同的响应队列。 |
Communication Style | Request Response | 这意味着至少需要服务运行JMeter外,将响应请求。此服务必须侦听请求队列,并发送消息引用的队列由message.getJMSReplyTo() |
Use Request message ID | checked | 可以留下JMeter的使用消息ID请求传入的消息并回收之间的相关性(押金)。 |
Use Response message ID | checked | 可以留下使用JMeter的消息标识符响应(恢复)传入的消息和恢复之间的相关性。 |
Time(milliseconds) | 2000 | 使用此超时的消息时,如果没有收到JMeter的恢复时间(这里2秒),那么该项目将被标记错误。 |
Content | Testing point to point | 这仅仅是该消息的内容。 |
InitialContextFactory | org.apache.activemq.jndi .ActiveMQInitialContextFactory |
Active MQ标准InitialContextFactory |
queue.Q.REQ | example.A | 之间的对应关系的队列JNDI名称(Q.REQ)的队列中的ActiveMQ(example.A)真实姓名。 |
Provider URL | tcp://localhost:61616 | ActiveMQ地址和端口。 |
下面的屏幕截图显示,上述配置:
CREATE LISTENER
Now add the Listener element. This element is responsible for storing all of the results of your JMS requests in a file and presenting a visual model of the data.
Select the Thread Group element and add a View Results Tree listener (Add > Listener > View Results Tree).
SAVE AND EXECUTE TEST PLAN
Now save the above test plan as jmsptp_test.jmx. Execute this test plan using Run > Start option.
VERIFY OUTPUT
Return to the admin console of ActiveMQ, from this we can see message status in the queue.
构建JMS主题测试计划
现在,让我们写一个 JMeter 测试计划,测试JMS提供商。我们将创建一个用户和一个出版商。创建一个线程组,并设置每次一到两个迭代。
首先,让我们启动JMeter /home/manisha/apache-jmeter-2.9/bin/jmeter.sh.
添加用户
现在,创建一个线程组,右键点击 Test Plan > Add> Threads(Users)> Thread Group. 根据测试计划节点将添加线程组。命名此主题组作为JMS pub-sub用户。

我们将改变循环次数为2。其余的线程组的默认属性将被保留。这意味着一个线程组使用一个线程或用户发送两条消息分别通过一个请求队列。
加入JMS用户和发布
添加发布接下来,添加采样JMS发布到发布元素 (Add > Sampler > JMS Publisher). 然后,选择JMS发布元素在树中编辑以下属性:
属性 | 值 | 描述 |
---|---|---|
Name | Sample Publisher | 树中显示该元素的描述性名称。 |
If the JMS provider uses the jndi.properties file | check the box | 使用jndi.properties。请注意该文件必须在classpath - 例如通过更新user.classpath JMeter的属性。如果这个选项没有被选中,JMeter使用“JNDI初始上下文工厂”和“提供URL”字段创建连接。 |
InitialContextFactory | org.apache.activemq.jndi.ActiveMQInitialContextFactory | Name of the context factory. |
Provider URL | tcp://localhost:61616 | JMS提供者的URL。 |
Connection Factory | ConnectionFactory | JMS提供者的URL。 |
Destination | dynamicTopics/MyStaticTopic1 | 消息主题的名称。对于ActiveMQ的动态主题(动态创建主题)。 |
Number of samples to aggregate | 2 | 聚集的样品数量。 |
Message source | Textarea |
在哪里获得消息:
从文件:表示引用的文件,将所有样品读取和重用
随机文件从指定的文件夹如下:指从指定的文件夹下面,将选择一个随机文件,这个文件夹必须包含两种副档名为.dat字节的消息,或带扩展名的文件.txt或.obj对象或文本消息。
文本区域使用文本或对象消息:消息
|
Message type | Text | 文字,地图,对象消息或字节消息 |
其余的属性均保留默认值。下面的屏幕截图显示,上述配置:

现在,我们已经定义了我们的用户,它是时间来定义,他们将要执行的任务。开始通过增加采样JMS订阅服务器上认购元素(Add > Sampler > JMS Subscriber). 然后,选择树中的JMS订阅服务器元素的编辑以下属性:
属性 | 值 | 描述 |
---|---|---|
Name | Sample Subscriber | 树中显示该元素的描述性名称。 |
If the JMS provider uses the jndi.properties file | check the box | 使用jndi.properties。请注意该文件必须在classpath - 例如通过更新 user.classpath JMeter 属性。如果这个选项没有被选中,JMeter的使用“JNDI初始上下文工厂”和“提供URL”字段创建连接。 |
InitialContextFactory | org.apache.activemq.jndi.ActiveMQInitialContextFactory | 名称的上下文厂。 |
Provider URL | tcp://localhost:61616 | JMS提供者的URL。 |
Connection Factory | ConnectionFactory | JMS提供者的URL。 |
Destination | dynamicTopics/MyStaticTopic1 | 消息主题的名称。对于ActiveMQ的动态主题(动态创建主题)。 |
Read response | Check Box | 采样器读取响应。如果没有,只有响应的长度将被返回。 |
Timeout | 2000 | 指定的超时时间,以毫秒为单位。 0=null。这是整体的总超时,而不是每个样品。 |
其余属性均保留默认值。下面的屏幕截图显示,上述配置:

创建侦听器
现在添加Listener元素。此元素是负责为您的JMS请求的结果存储在一个文件中,并呈现出可视化的数据模型。
选择线程组元件和添加查看结果树监听器 (Add > Listener > View Results Tree).

保存并执行测试计划
现在保存的以上测试计划 jms_pub_sub.jmx。执行本测试计划使用 Run > Start选项。 option.
校验输出
输出发布者




返回到管理控制台 ActiveMQ,从这个我们可以看到消息状态下的主题。
