[英]Need to set JMS_IBM_LAST_MSG_IN_GROUP property to true for IBM MQ testing using JMeter
我正在使用 JMeter 測試 IBM MQ,並且能夠與隊列建立連接以通過它發送請求。 但是,我需要將其中一條消息的“JMS_IBM_LAST_MSG_IN_GROUP”屬性設置為 true,但無法這樣做。 我在發送請求或嘗試將屬性設置為 true 時使用下面的一段代碼,但在我檢查后端時它仍然設置為默認值,即 false。 任何線索我在這里失蹤。
注意:正在另一個采樣器中建立連接並在此處使用該連接。 此代碼可以正常發送任何請求,只是該屬性未設置為 true。
import java.time.Instant
import com.ibm.msg.client.jms.JmsConstants
def sess = System.getProperties().get("Session")
def destination = System.getProperties().get("Destination")
def producer = sess.createProducer(destination)
def rnd = new Random(System.currentTimeMillis())
def payload = String.format('${groupid}|${sequencenumber}|rest of the payload|')
def msg = sess.createTextMessage(payload)
println('Payload --> ' + payload)
msg.setBooleanProperty(JmsConstants.JMS_IBM_LAST_MSG_IN_GROUP,true)
def start = Instant.now()
producer.send(msg)
def stop = Instant.now()
producer.close()
SampleResult.setResponseData(msg.toString())
SampleResult.setDataType( org.apache.jmeter.samplers.SampleResult.TEXT)
SampleResult.setLatency( stop.toEpochMilli() - start.toEpochMilli())
您的代碼不包含任何用於設置組 ID 或序列號的內容。 我假設我們已經顯示了所有相關代碼,在這種情況下,我認為您缺少以下代碼:
msg.setStringProperty("JMSXGroupID", groupid);
msg.setIntProperty("JMSXGroupSeq", sequencenumber);
根據 IBMMQ 文檔的JMS_IBM_LAST_MSG_IN_GROUP章節
此屬性在發布/訂閱域中被忽略,並且在應用程序連接到服務集成總線時不相關。
一般來說,沒有必要使用這個屬性,你可以想出你自己的自定義屬性,即生產者:
msg.setBooleanProperty("X_CUSTOM_PROPERTY_LAST_MESSAGE",true)
對於消費者:
msg.getBooleanProperty("X_CUSTOM_PROPERTY_LAST_MESSAGE")
分享,因為它可能會幫助別人。 能夠通過進行以下更改將屬性設置為 true,其余代碼與原始問題中提到的相同
import com.ibm.msg.client.wmq.WMQConstants
def gid=String.format('${groupid}')
def msg = sess.createTextMessage()
println('Payload --> ' + payload)
msg.setStringProperty(WMQConstants.JMSX_GROUPID,gid)
msg.setBooleanProperty(WMQConstants.JMS_IBM_LAST_MSG_IN_GROUP,true)
msg.text=payload
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.