準備工作
針對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"/>
上面標記的這個數字為大連接數,自己設置,如果太小的話會導致發送的請求都被拒絕
啟動ServerAgent:進入剛才解壓的目錄,以管理員身份運行startAgent.bat
創建JMS測試計劃
啟動Jmeter:進入JMETER_HOMEin目錄,以管理員身份運行Jmeter.bat,此時會啟動兩個窗口,一個是dos窗口(請勿關閉此窗口),另一個是Jmeter的GUI界面
添加一個線程組
添加Samper:選擇JMS POINT TO POINT
配置Sampler,這一塊才是重點,因為要用到JNDI,之前網上看了些文章,都是直接修改ApacheJMeter_core.jar中的jemeter.properties文件,這種方式比較麻煩,涉及重新打包,這里我直接在Jmeter GUI中配置JNDI的屬性,具體見下圖:
QueueConnection Factory:連接名
JNDI name Request queue:JNDI請求發送隊列名
JNDI name Recieve queue:JNDI接收隊列
TimeOut:超時時長
Expiration:過期時間
Communication style:Request only(只發送請求,如果選擇Request Response模式,需要設置CorrelationId,并且需要服務端調用getReplyTo()方法來監聽請求,這個一直沒調通,回頭再研究看看能不能通過自己寫代碼實現)
Content:發送消息內容,這里調用Jmeter的函數助手發送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,這個是消息服務器的ip和端口,我這里用的本地的