馬渡江頭苜蓿香,片雲片雨渡瀟湘
--《明朝那些事兒》
轉自:https://www.cnblogs.com/DeryKong/p/14847577.html
一、下載安裝ActiveMQ
ActiveMQ下載:https://activemq.apache.org/
解壓:tar -zxvf apache-activemq-5.16.2-bin.tar.gz
切換到activemq的bin目錄:cd apache-activemq-5.16.2/bin
啓動MQ:./activemq start
檢查MQ是否正常啓動:ps -ef|grep activemq|grep -v grep
瀏覽器打開:http://localhost:8161 admin/admin 登錄查看
JMS腳本開發
jms(java message service):java消息服務器應用程序接口,是一個Java平臺面向消息中間件的api,用於在兩個應用程序之間,或分佈式系統中發送信息,進行異步通信
Connection Factory:創建一個連接,向消息服務器發送消息以及從消息服務器接收信息均是通過此連接進行
Connection:是客戶端與消息服務器的活動連接
Session:是用於生產和使用消息的單線程上下文
MessageProduce:指定的物理目標發送消息
MessageConsumer:客戶端是使用Message Consumer對象從指定的目錄目標接收信息
二、jmeter開發jms腳本的步驟
1、創建 jndi.properties文件
java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
java.naming.provider.url=tcp://localhost:61616
# 指定 connectionFactory 的 jndi名字,多個名字之間可以逗號隔開
connectionFactoryNames=connectionFactory
# 註冊queue,格式:
# queue.[jndiName]=[physicalName]
#使用時:(Queue)context.lookup("jndiName"),此處是MyQueuePerPertest自定義命名
queue.MyQueuePerPertest=MyQueuePerPertest
# 註冊 topic,格式:
# topic.[jndiName]=[physicalName]
# 使用時:(Topic)context.lookup("jndiName"),此處是MyTopicPerPertest自定義命名
queue.MyTopicPerPertest=MyTopicPerPertest
2、把這個文件夾加入到ApacheJMeter.jar這裏
保存並把這個文件複製到 JMETER_HOME/bin (JMETER_HOME爲 jmeter 的安裝目錄)目錄中。
由於 bin 目錄並不在 jmeter 的 classpath 中,所以需要執行一些額外的工作來把 jndi.properties 添加到 jmeter 的classpath 中。
這兒使用一種最簡單的辦法:把 jndi.properties 打包到 jmeter 的啓動 jar 包中。 jmeter 的啓動 jar 包爲 JMETER_HOME/bin/ApacheJMeter.jar,所以需要把 jndi.properties 添加到這個 jar 文件中。執行如下操作,打開命令行窗口,並定位到 JMETER_HOME/bin 目錄,運行如下命令 jar uf ApacheJMeter.jar jndi.properties 就可以,
命令行:jar uf ApacheJMeter.jar jndi.properties
3、拷貝Active所需用到的包文件到jMeter的lib下面
jmeter 在測試 jms 的時候會使用到 activemq 提供的 jms 的實現類,這些類並沒有隨 jmeter 一起分發,所以需要把這些類添加到 jmeter 的 classpath 中。只要把 ACTIVE_HOME/activemq-all-5.2.0.jar 文件複製到 JMETER_HOME/lib 目錄中即可。
重啓JMeter,添加取樣器列表可以看到有JMS的選擇
這裏,發送MQ的腳本就完成了
三種方式:
1、jms to jms
tcp://localhost:61616
測試JMS的PUB/SUB模式
步驟:
jms的訂閱(消費)
在這裏添加響應的信息,進行請求,會一直等待狀態
jms的發送者:
請求消息,再來看訂閱者,就會看到消息接收