首页 > 解决方案 > 需要将 JMS_IBM_LAST_MSG_IN_GROUP 属性设置为 true 以使用 JMeter 进行 IBM MQ 测试

问题描述

我正在使用 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())

标签: groovyjmeteribm-mq

解决方案


您的代码不包含任何设置组 ID 或序列号的内容。我假设我们已经显示了所有相关代码,在这种情况下,我认为您缺少以下代码:

msg.setStringProperty("JMSXGroupID", groupid);
msg.setIntProperty("JMSXGroupSeq", sequencenumber);

推荐阅读