使用Jmeter測試JMS

jopen 9年前發布 | 22K 次閱讀 測試工具 JMeter

前言:使用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://yourIP: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 = ActiveMQ.Advisory.Consumer.Topic.cacheupdate  </pre><br />


保存并把這個文件復制到 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

來自:http://blog.csdn.net/hunterno4/article/details/10161081

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!