jmeter - 如何在 Jmeter 中使用 JMS Point-to-Point Sampler 将消息发送到 IBM MQ 队列
问题描述
我有一个设置了一些默认队列的本地 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 点对点采样器?
我将不胜感激任何帮助。
解决方案
我认为目前不可能,选项包括:
- 使用mqmeter - MQ JMeter Extension,它将提供一个自定义的Java 请求采样器
- 继续使用 JSR223 测试元素,示例生产者和消费者代码片段可以在IBM MQ testing with JMeter - Learn How文章中找到
推荐阅读
- spring-boot - 错误:反复出现错误“不支持 Java 14”
- javascript - 我不明白这个 JavaScript 示例的结果:console.log(array1.copyWithin(1, 3));
- android - Android Firebase 使用自定义数据处理 FCM 通知点击
- awk - AWK 正则表达式获取月份日期
- haskell - Haskell 中存在类型的编译问题
- amazon-web-services - AWS Cognito,放大 - 名称属性未与 currentauthenticateduser 一起显示
- java - 从 JsonObject 中提取所有名称元素
- flutter - Expanded Widget 占据整个屏幕
- node.js - 在heroku中部署我的项目。我的应用程序在本地运行良好,但在部署时它崩溃了
- python - 下载 CSV 链接 Python 请求模块