我的新浪微博:http://weibo.com/u/1602714773
CSDN博客:http://blog.csdn.net/hunterno4
使用Jmeter测试JMS
上一篇 /
下一篇 2013-08-21 20:23:49
/ 个人分类:软件测试
前言:使用Jmeter测试ActiveMQ的JMS消息,网上有一篇,但是图片看不了,具体参数填什么也不清楚,因此决定总结这篇
所使用的Jmeter版本2.8,activemq版本5.6
一、创建jndi.properties文件
由于 jmeter 是通过 jndi 来获得 jms 中相关对象的,如 ConnectionFactory 和 Destination,所以在 jmeter 的 classpath 中需要添加一个 jndi.properties 属性文件,用于配置jndi
创建jndi.properties文件,包含如下内容
- java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
- java.naming.provider.url = tcp:
- #指定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 = ActiveMQ.Advisory.Consumer.Topic.cacheupdate
保存并把这个文件复制到 JMETER_HOME/bin(JMETER_HOME为 jmeter 的安装目录)目录中。
二、把jndi.properties放到jmeter的启动jar包中
由于bin目录并不在jmeter的classpath中,所以需要执行一些额外的工作来把jndi.properties添加到jmeter的classpath中,把jndi.properties打包到jmeter的启动jar包中。jmeter的启动jar包为JMETER_HOME/bin/ApacheJMeter.jar,所以需要把jndi.properties 打包到这个 jar 文件中。直接将文件拖入jar包中即可。
或者执行如下操作,打开命令行窗口,并定位到 JMETER_HOME/bin 目录,运行如下命令 jar uf ApacheJMeter.jar jndi.properties
三、添加activemq-all-5.2.0.jar包到Jmeter的lib库
将ACTIVE_HOME/activemq-all-5.2.0.jar文件复制到JMETER_HOME/lib目录中,jmeter在测试jms的时候会使用到activemq提供的jms的实现类,这些类并没有随jmeter一起分发,需要把这些类添加到jmeter的classpath中。
四、启动Jmeter测试JMS添加线程组及JMS的sampler,有三种方式的JMS消息
1、Point-to-Point
填写参数如下:
QueueConnection Factory:connectionFactory
JNDI name Request queue:MyQueue
JNDI name Receive queue:MyQueue
Content:this is a test
Initial Context Factory:org.apache.activemq.jndi.ActiveMQInitialContextFactory
Provider URL:tcp://yourIP:61616
2、Publisher
基本值同Point-to-Point,不同点在于Destination,填写JMS的topic目的地
若在ActiveMQ中Topics的名字为example.MyTopic
则jndi.properties文件中定义的topic如下:
topic.MyTopic = example.MyTopic
则Destination填写topic.后面的MyTopic
3、Subscriber
基本值同Publisher,不同在于可以根据需要填写Client ID,JMS Selector进行消息过滤
报错:Response message: javax.naming.NameNotFoundException:***
原因Destination中填写的错了,以为填写ActiveMQ中实际的Topic名
其实在jndi.properties文件中已经实例化了,topic.MyTopic = example.MyTopic,这里example.MyTopic就是ActiveMQ中的Topic名
因此实际填写时是填写topic.后的MyTopic
收藏
举报
TAG:
activemq
软件测试
Jmeter
jms