对于使用JMeter进行IBM MQ测试,需要将JMS_IBM_LAST_MSG_IN_GROUP属性设置为true.&



我正在使用JMeter测试IBM MQ,并且能够与队列建立连接并通过它发送请求。但是,我需要设置"JMS_IBM_LAST_MSG_IN_GROUP">属性为其中一条消息的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")

更多信息:使用JMeter进行IBM MQ测试-了解如何进行

分享,因为它可能会帮助别人。可以通过以下更改将属性设置为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

相关内容

  • 没有找到相关文章

最新更新