0

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

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

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

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

  • JMeter 将一些 ID 为 1 的消息发送到名为“DEV.QUEUE.1”的队列
  • 被测系统从“DEV.QUEUE.1”获取消息,进行一些处理并将响应放在“DEV.QUEUE.2”上
  • JMeter 检查并断言已在 X 秒内收到对名为“DEV.QUEUE.2”的队列中 ID1 的消息的响应
  • 在汇总报告中查看结果

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 点对点采样器?

我将不胜感激任何帮助。

4

1 回答 1

1

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

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