如何在JMeter中用JMS Point-to-Point Sampler连接IBM MQ实现队列收发测试
前置依赖确认
首先将IBM MQ官方提供的JMS客户端依赖包(com.ibm.mq.allclient.jar、javax.jms-api.jar)放入JMeter安装目录的lib/ext路径下,重启JMeter生效。
基础疑问解答
- JMS Point-to-Point Sampler是基于标准JMS API实现的,并非仅兼容ActiveMQ,只要提供对应MQ厂商的JMS客户端驱动,完全支持IBM MQ。
- 你描述的请求-响应队列关联测试场景可以通过该采样器实现,无需额外编写自定义代码。
1a 连接两个队列的配置方法
打开JMS Point-to-Point Sampler,按以下配置映射你提供的连接参数:
JMS Resources区域配置
- QueueConnection Factory:填
com.ibm.mq.jms.MQQueueConnectionFactory - JNDI name Request queue:填
DEV.QUEUE.1 - JNDI name Receive queue:填
DEV.QUEUE.2 - Username:填
mquser - Password:填
secretpassword - Number of samples to aggregate:填
1即可,单发单收场景不需要批量聚合采样
JNDI Settings区域配置
初始上下文工厂填com.sun.jndi.fscontext.RefFSContextFactory,下方JNDI属性添加以下键值对:
| 键 | 值 | 对应代码中的参数 |
|---|---|---|
| mq.hostName | 127.0.0.1 | hostName |
| mq.port | 1414 | hostPort |
| mq.channel | DEV.APP.SVRCONN | channelName |
| mq.queueManager | QM1 | queueManagerName |
| mq.transportType | 1 | 对应WMQ_CM_CLIENT客户端连接模式 |
2a 目标测试场景的实现步骤
- 采样器的
Communication style选项选择Request Response模式 - 超时时间
Timeout (ms)字段填入你需要的X秒对应的毫秒值,比如要等待10秒就填10000 - 消息关联配置:在Message Properties区域添加自定义属性,键为
businessId,值为你指定的ID1,如果需要动态生成唯一ID可以用JMeter函数${__UUID()} - JMS Selector字段配置:和被测系统约定关联规则即可,通常被测系统会将请求消息的自定义属性写入响应消息的对应字段:
- 如果约定用
businessId关联,填businessId='ID1' - 如果约定用标准
JMSCorrelationID关联请求的消息ID,填JMSCorrelationID='${__jmsMessageId()}'
- 如果约定用
- 添加断言:添加JMS响应断言,判断返回的消息内容不为空,或者符合业务预期规则
- 添加
Aggregate Report监听器,运行测试后即可查看所有请求的响应时间、成功率、吞吐量等指标。
内容的提问来源于stack exchange,提问作者JustNatural
相关产品推荐
相关产品推荐

