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