目 录

jMeter JMS测试计划

在本章中,我们将学习如何写一个简单的测试计划,测试JMS(Java消息服务)。谁不知道JMS请阅读本章之前,让自己熟悉的JMS。 JMS支持两种类型的消息:

  • 点到点消息: 一般用于交易发件人期望的响应队列消息。邮件系统是完全不同于普通的HTTP请求。在HTTP中,单个用户发送一个请求并得到响应。

     

  • 主题消息 : 发布/订阅消息被俗称为主题的消息。主题消息一般使用情况下,消息发布由生产者和消费由多个用户。

让我们来看看这些为每个测试的例子。测试JMS的先决条件是:

ActiveMQ Server

  • 我们将在我们的例子中使用的是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.

Thread Group Added

我们将改变循环次数为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地址和端口。

下面的屏幕截图显示,上述配置:

JMS Point to point sampler

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).

JMS Point to Point Test Listener

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

JMS PTP Test OutputJMS PTP Test OutputJMS PTP Test Output

Return to the admin console of ActiveMQ, from this we can see message status in the queue.

JMS PTP Admin Console

构建JMS主题测试计划

现在,让我们写一个 JMeter 测试计划,测试JMS提供商。我们将创建一个用户和一个出版商。创建一个线程组,并设置每次一到两个迭代。

首先,让我们启动JMeter  /home/manisha/apache-jmeter-2.9/bin/jmeter.sh.

添加用户

现在,创建一个线程组,右键点击 Test Plan > Add> Threads(Users)> Thread Group. 根据测试计划节点将添加线程组。命名此主题组作为JMS pub-sub用户。

Thread Group Added

我们将改变循环次数为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 publisher sampler添加订阅服务

现在,我们已经定义了我们的用户,它是时间来定义,他们将要执行的任务。开始通过增加采样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。这是整体的总超时,而不是每个样品。

其余属性均保留默认值。下面的屏幕截图显示,上述配置:

JMS subscriber sampler

创建侦听器

现在添加Listener元素。此元素是负责为您的JMS请求的结果存储在一个文件中,并呈现出可视化的数据模型。

选择线程组元件和添加查看结果树监听器 (Add > Listener > View Results Tree).

JMS Pub Sub Test Listener

保存并执行测试计划

现在保存的以上测试计划 jms_pub_sub.jmx。执行本测试计划使用 Run > Start选项。 option.

校验输出

输出发布者JMS Publish Sub Test OutputJMS Publish Sub Test Output订阅服务器输出JMS Publish Sub Test OutputJMS Publish Sub Test OutputJMS Publish Sub Test Output

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

JMS Publish Sub Admin Console