我目前正在JMeter中使用JSR 223采样器测试IBM MQ请求。这里我的场景是,我需要将请求发送到一个队列名(Queue.In),并从另一个队列名(Queue.out)中检索响应。现在我可以从Queue.out中检索响应,但我不确定它是否提取了我发送的正确消息,或者其他一些消息请求已经在队列中(FIFO模型)。
也许,我知道如何修改我下面的代码,将消息ID/相关ID发送到Queue.IN,并从Queue.out中检索相同的消息ID/相关ID,或者请建议是否有更好的方法从Queue. out中提取相同的消息。
import com.ibm.mq.MQAsyncStatus
import com.ibm.mq.MQMessage
import com.ibm.mq.MQPutMessageOptions
import com.ibm.mq.MQQueueManager
import com.ibm.mq.constants.CMQC
import com.ibm.mq.constants.MQConstants
import com.ibm.mq.headers.MQRFH2
def mqProps = new Hashtable<String, Object>()
mqProps.put(MQConstants.CHANNEL_PROPERTY, 'xxxx')
mqProps.put(MQConstants.PORT_PROPERTY, 1414)
mqProps.put(MQConstants.HOST_NAME_PROPERTY, 'xxx')
def hostName = "${p_hostName}"
def hostPort = ${p_hostPort}
def channelName = "${p_channelName}"
def qManager = "${p_queueManagerName}"
def queueName = "${p_queueName}"
def qMgr = new MQQueueManager(qManager, mqProps)
def openOptions = MQConstants.MQOO_OUTPUT | MQConstants.MQOO_INPUT_AS_Q_DEF
def queue = qMgr.accessQueue(queueName, openOptions)
def pmo = new MQPutMessageOptions()
pmo.options = MQConstants.MQPMO_ASYNC_RESPONSE
def message = new MQMessage()
message.format = CMQC.MQFMT_RF_HEADER_2
def rfh2 = new MQRFH2()
rfh2.setEncoding(CMQC.MQENC_NATIVE)
rfh2.setCodedCharSetId(CMQC.MQCCSI_INHERIT)
rfh2.setFormat(CMQC.MQFMT_STRING)
rfh2.setNameValueCCSID(1208)
rfh2.setFieldValue('usr', '${Var1}', '${Var2}')
rfh2.write(message)
message.writeString('''${request_payload}''')
queue.put(message, pmo)
queue.close()
MQAsyncStatus asyncStatus = qMgr.getAsyncStatus()
log.info('Successfully published: ' + asyncStatus.putSuccessCount + ' message(s)')
1条答案
按热度按时间fv2wmkja1#
您可以将相关ID存储到JMeter Variables中,如下所示:
其中
vars
代表JMeterVariables类示例,有关更多详细信息,请参见Top 8 JMeter Java Classes You Should Be Using with Groovy文章。那么为了检索特定的消息,您需要执行如下操作:
更多信息:Getting a particular message