首页 > 解决方案 > 如何在 Jmeter 中使用 JMS Point-to-Point Sampler 将消息发送到 IBM MQ 队列

问题描述

我有一个设置了一些默认队列的本地 IBM MQ 实例。

使用 JMeter 5.4.1,我首先想将消息发送到这些队列之一以测试连接是否有效。

1. IBM MQ 是否可行,还是仅适用于 Active MQ?

我希望实现的测试场景是这样的:

2. 这是否可以通过 JMS 点对点采样器实现?

我已经检查了官方 JMeter 文档,但我不明白我需要在每个采样器的配置字段中放置哪些连接细节。

JMS Resources
QueueConnection Factory:
JNDI name Request queue:
JNDI name Receive queue:
Number of samples to aggregate
JMS Selector
....
etc...

在此处输入图像描述 我能够使用 JSR223 采样器中的自定义代码连接到一个队列并发送消息。这些是我用来创建连接的连接详细信息:

def hostName = "127.0.0.1"
def hostPort = 1414
def channelName = "DEV.APP.SVRCONN"
def queueManagerName = "QM1"
def queueName = "DEV.QUEUE.1"

def ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER)
def cf = ff.createConnectionFactory()

cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, hostName)
cf.setIntProperty(WMQConstants.WMQ_PORT, hostPort)
cf.setStringProperty(WMQConstants.WMQ_CHANNEL, channelName)
cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT)
cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, queueManagerName)

def connInboundQueue = cf.createConnection("mquser", "secretpassword")
def sessInboundQueue = connInboundQueue.createSession(false, Session.AUTO_ACKNOWLEDGE)
def destinationInboundQueue = sessInboundQueue.createQueue(queueName)
connInboundQueue.start()

我猜我可以将这些连接凭据映射到这个 JMS 点对点采样器,以便我可以实现相同的连接,我只是不知道如何。

所以总结一下:

1a。如何使用 JMS 点对点采样器连接到我的两个队列?

2a. 如何为我上面描述的场景配置 JMS 点对点采样器?

我将不胜感激任何帮助。

标签: jmeterjmsibm-mqjndipoint-to-point

解决方案


我认为目前不可能,选项包括:

  1. 使用mqmeter - MQ JMeter Extension,它将提供一个自定义的Java 请求采样器
  2. 继续使用 JSR223 测试元素,示例生产者和消费者代码片段可以在IBM MQ testing with JMeter - Learn How文章中找到

推荐阅读