(Jmeter 四)JMeter JMS性能测试

来源:互联网 发布:go web编程很费劲 编辑:程序博客网 时间:2024/06/06 02:14

引用http://www.cnblogs.com/qianyiliushang/p/4348584.html?utm_source=tuicool&utm_medium=referral

JMS参考http://blog.csdn.net/jiuqiyuliang/article/details/46701559

MOM 作为消息数据交换的平台,也是影响应用执行效率的潜在环节。在 Java 程序中,是通过 JMS 与 MOM 进行交互的。作为 Java 实现的压力测试工具,JMeter 也能使用 JMS对应用的消息交换和相关的数据处理能力进行测试。这一点应该不难理解,因为在整个测试过程中,JMeter 测试的重点应该是消息的产生者和消费者的本身能力,而不是 MOM本身。

根据 JMS 规范,消息交换有2种方式:发布/订阅和点对点。JMeter针对这两种情形,分别提供了不同的Sampler进行支持。

目的

使用Jmeter测试ActiveMQJMS消息

以下MOM我们使用ActiveMQ ,分别描述发布/订阅和点对点这两种消息交换方式是如何使用 JMeter 进行测试。

1. 测试前的准备(两种情况都适用)

  • JMeter 虽然能使用 JMS 对 MOM 进行测试,但是它本身并没有提供JMS需要使用的包。下载解压Activemq 将 activemq-all-5.13.3.jar复制至apache-jmeter-2.13\lib目录下(http://activemq.apache.org/download.html)。运行时发现提示如下类冲突的错误,解决方法:用压缩工具打开apche-all-*.jav....staticloggerbinder.class所在目前,将该类重命名。


  • JMeter 在测试时使用了 JNDI,为了提供 JNDI 提供者的信息,需要提供 jndi.properties。同时需要将 jndi.properties 放到 JMeter 的 bin下的 ApacheJMeter.jar 打包在一起。执行如下操作,打开命令行窗口,并定位到 JMETER_HOME/bin 目录,运行如下命令 jar uf ApacheJMeter.jar jndi.properties(直接修改ApacheJMeter_core.jar中的jemeter.properties文件,这种方式比较麻烦,涉及重新打包,直接在Jmeter GUI中配置JNDI的属性也可以)

对于 ActiveMQ,jndi.properties 的示例内容如下:

java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory

java.naming.provider.url = tcp://localhost:61616

#指定connectionFactory的jndi名字,多个名字之间可以逗号分隔。

#以下为例:

#对于topic,使用(TopicConnectionFactory)context.lookup("connectionFactry")

#对于queue,(QueueConnectionFactory)context.lookup("connectionFactory")

connectionFactoryNames = connectionFactory

#注册queue,格式:

#queue.[jndiName] = [physicalName]

#使用时:(Queue)context.lookup("jndiName"),此处是MyQueue

queue.MyQueue = example.MyQueue

#注册topic,格式:

# topic.[jndiName] = [physicalName]

#使用时:(Topic)context.lookup("jndiName"),此处是MyTopic

topic.MyTopic = example.MyTopic


2、测试步骤

  • 启动ActiveMQ:打开dos窗口,进入ActiveMQ解压目录下的bin目录,输入命令:activemq.bat start
    • Tips:在启动ActiveMQ前,修改conf目录下的activemq.xml中的配置
      <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=65535&amp;wireFormat.maxFrameSize=104857600"/>

      上面标记的这个数字为最大连接数,自己设置,如果太小的话会导致发送的请求都被拒绝

  • 启动Jmeter
  • 添加一个线程组
  • 添加Samper:选择JMS POINT TO POINT
  • 配置Sampler

    • QueueConnection Factory:连接名
    • JNDI name Request queue:JNDI请求发送队列名
    • JNDI name Recieve queue:JNDI接收队列
    • TimeOut:超时时长
    • Expiration:过期时间
    • Communication style:Request only(只发送请求,如果选择Request Response模式,会验证收到消息的JMS Header中的JMSCorrelationID,以判断是否是对请求消息的响应。需要设置CorrelationId,并且需要服务端调用getReplyTo()方法来监听请求)
    • Content:发送消息内容,这里调用Jmeter的函数助手发送512个字符
    • Initial Context Factory:org.apache.activemq.jndi.ActiveMQInitialContextFactory(这个在之前从AMQ中拷贝到Jmeter\lib中的jar包里,Jmeter会自动扫描到)
    • JNDI Properties,queue.Test.Request和queue.Test.Reply,这里定义前面用到的两个变量
    • Provider URL:tcp://localhost:61616,这个是消息服务器的ip和端口,本地






0 0