Jmeter 測試 JMS (Java Message Service)/ActiveMQ 性能


前言


JMS介紹:JMS即Java消息服務(Java Message Service)應用程序接口,是一個Java平台中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。(百度 )

本文只測試ActiveMQ,其他消息中間件應該同理.

ActiveMQ介紹


JMS常見2種消息模型:

  1. 點對點(Queues隊列)
    生產者產生消息,仍1條消息給ActiveMQ,消費者監聽ActiveMQ,從ActiveMQ中取走1條消息,並銷毀這個消息,且只會有一個監聽的消費者取走.其他消費者不會取走信息
  2. 廣播/訂閱(Topics 隊列)
    廣播出1條消息給ActiveMQ,訂閱監聽ActiveMQ,所有當時監聽ActiveMQ的訂閱都可以取到這條消息,並銷毀這個消息,

3 . 虛擬Topics
為什么說2種消息模型,這里會有第三種,因為Topics隊列的性質決定,當我要發消息給很多訂閱,但是如果訂閱監聽服務掛掉,就不能收到這個消息,導致消息未發布到這個訂閱,所以引申出第三個消息模型,虛擬Topics.
廣播出1條消息給ActiveMQ Topics隊列,ActiveMQ會自動轉換給要分發消息的訂閱 Queues 隊列.然后訂閱監聽Queues隊列去取走消息.這2種消息模型的結合,產生出第三種消息模型,虛擬Topics.

准備工作


以ActiveMQ為例子,使用jmeter測試JMS.

  • Jmeter版本:3.2
  • ActiveMQ版本5.14.5
編寫jndi.properties添加到ApacheJMeter.jar 中
  • 新建jndi.properties到jmeter/bin目錄下
  • 復制內容為:
java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url = tcp://IP:61616 

connectionFactoryNames = connectionFactory

queue.T_MDM_Q = Queue.T_MDM
queue.T_IPS_Q= Queue.T_IPS

topic.T_MDM_T= VirtualTopic.T_MDM
topic.T_IPS_T= VirtualTopic.T_IPS

java.naming.factory.initial:ActiveMQ jar包中 init 所需的 類名
java.naming.provider.url:ActiveMQ的地址
connectionFactoryNames:鏈接工廠名稱
queue.T_MDM_Q:隊列名稱
queue:說明是queue隊列
T_MDM_Q:自定義字段,在后面用來指向隊列名稱
同理topic.T_MDM_T

  • 把配置文件打到ApacheJMeter.jar 中 在jmeter/bin目錄下運行 
    jar uf ApacheJMeter.jar jndi.properties
下載ActiveMQ

把ActiveMQ下 activemq-all-x.x.x.jar放到Jmeter/lib下




配置Jmeter進行測試 點對點(Queues隊列)


  1. 待測消息模型:點對點(Queues隊列)
  2. 待測隊列名稱:Queue.T_MDM

右鍵》添加》sampler》JMS point-to-point 添加一個隊列的界面

 

 

 

 

QueueConnection Factory:jndi.properties中connectionFactoryNames 字段
JNDI Name Request queue:生產者向哪個隊列插入消息,jndi.properties中對應待測隊列名稱的queue.xxxxx
JNDI Name Reply queue:消費者從哪個隊列取消息,jndi.properties中對應待測隊列名稱的queue.xxxxx
Content:消息內容
InitialContextFactory:org.apache.activemq.jndi.ActiveMQInitialContextFactory
Provider URL:ActiveMQ地址

配置Jmeter進行測試 發布/訂閱(Topic隊列)


  1. 待測消息模型:發布/訂閱(Topic隊列)
  2. 待測隊列名稱:VirtualTopic.T_MDM
配置發布 Publisher

右鍵》添加》sampler》JMS Publisher 添加一個Publisher界面

 


InitialContextFactory:org.apache.activemq.jndi.ActiveMQInitialContextFactory
Provider URL:ActiveMQ地址
QueueConnection Factory:jndi.properties中connectionFactoryNames 字段
Destination:發布往隊列的名稱,jndi.properties中對應Topic隊列名稱的topic.xxxx
Text Massage:發布的消息

 

配置訂閱 Subscriber

右鍵》添加》sampler》JMS Subscriber添加一個Publisher界面

 

 

總結


上面只介紹了ActiveMQ的配置方法,因為我也只調了ActiveMQ,其他JMS中間件沒有試過,如果你們項目中需要,可以試一下.

Jmeter測試JMS中涉及的其他參數設置,可能會用到的,查看Jmeter說明http://jmeter.apache.org/usermanual/build-jms-point-to-point-test-plan.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM