準備工作
針對JMS類型的Sampler,需要額外的jar包(這里用的是apache ActiveMQ,將下載的AMQ apache-activemq-5.5.0根目錄下的activemq-all-5.5.0.jar拷貝到JMETER_HOMElib目錄下)
啟動ActiveMQ:打開dos窗口,進入ActiveMQ解壓目錄下的binwin32目錄,輸入命令:activemq.bat start
Tips:在啟動ActiveMQ前,修改conf目錄下的activemq.xml中的配置
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=65535&wireFormat.maxFrameSize=104857600"/>
上面標記的這個數(shù)字為大連接數(shù),自己設(shè)置,如果太小的話會導(dǎo)致發(fā)送的請求都被拒絕
啟動ServerAgent:進入剛才解壓的目錄,以管理員身份運行startAgent.bat
創(chuàng)建JMS測試計劃
啟動Jmeter:進入JMETER_HOMEin目錄,以管理員身份運行Jmeter.bat,此時會啟動兩個窗口,一個是dos窗口(請勿關(guān)閉此窗口),另一個是Jmeter的GUI界面
添加一個線程組
添加Samper:選擇JMS POINT TO POINT
配置Sampler,這一塊才是重點,因為要用到JNDI,之前網(wǎng)上看了些文章,都是直接修改ApacheJMeter_core.jar中的jemeter.properties文件,這種方式比較麻煩,涉及重新打包,這里我直接在Jmeter GUI中配置JNDI的屬性,具體見下圖:
QueueConnection Factory:連接名
JNDI name Request queue:JNDI請求發(fā)送隊列名
JNDI name Recieve queue:JNDI接收隊列
TimeOut:超時時長
Expiration:過期時間
Communication style:Request only(只發(fā)送請求,如果選擇Request Response模式,需要設(shè)置CorrelationId,并且需要服務(wù)端調(diào)用getReplyTo()方法來監(jiān)聽請求,這個一直沒調(diào)通,回頭再研究看看能不能通過自己寫代碼實現(xiàn))
Content:發(fā)送消息內(nèi)容,這里調(diào)用Jmeter的函數(shù)助手發(fā)送512個字符
Initial Context Factory:org.apache.activemq.jndi.ActiveMQInitialContextFactory(這個在之前從AMQ中拷貝到Jmeterlib中的jar包里,Jmeter會自動掃描到)
JNDI Properties,queue.Test.Request和queue.Test.Reply,這里定義前面用到的兩個變量
Provider URL:tcp://localhost:61616,這個是消息服務(wù)器的ip和端口,我這里用的本地的