我一直在尝试从JMeter JMS发布者连接到IBM MQ。找不到在没有 JNDI 属性的情况下要使用的 corrert"初始上下文工厂"和"连接工厂"值。我的所有 MQ jar 都存在于 LIB 文件夹中。
我有以下信息-主机名 - Venus,端口 - 21717,目标队列名称 - request.queue,队列管理器 - Venus。QMGR,channel - venus.server.chl (无需授权)。
我的要求 - 使用具有上述详细信息的 JMS 发布器连接到 IBM MQ。但是我无法理清提供程序 URL、初始上下文工厂和连接工厂应该提供什么。你能帮忙吗,因为这在过去两周一直困扰着我,还没有找到解决方案? 如果您能告诉我在 JMS 发布器中填充上述值的位置以及连接到 IBM MQ 的位置,那就太好了。
我也尝试过user.classpath=/folder/with/mq/jars,但它不起作用,并且所有jar都已到位,JMeter重新启动仍然没有运气。
注意:在这两周里,我已经浏览了所有网站,但没有任何运气。
示例配置步骤如下所示:
- 将 javax.jms-api.-x.x.x jar 添加到 JMeter 类路径
- 将 mq-allclient-x.x.x.x.jar 添加到 JMeter 类路径
- 将 JSR223 采样器添加到您的测试计划中
-
将以下代码放入"脚本"区域:
import com.ibm.jms.JMSTextMessage; import com.ibm.mq.jms.*; import com.ibm.msg.client.wmq.WMQConstants; import javax.jms.JMSException; import javax.jms.Session; MQQueueConnectionFactory cf = new MQQueueConnectionFactory(); cf.setHostName("your_IBMMQ_host"); cf.setPort(1414); // or other port cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT); cf.setQueueManager("your_IBMMQ_queue_manager"); cf.setChannel("your_IBMMQ_channel"); cf.setStringProperty(WMQConstants.USERID, "your_IBMMQ_username"); cf.setStringProperty(WMQConstants.PASSWORD, "your_IBMMQ_password"); connection = (MQQueueConnection) cf.createQueueConnection(); MQQueueSession session = (MQQueueSession) connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); MQQueue queue = (MQQueue) session.createQueue("queue:///your_IBMMQ_queue"); MQQueueSender sender = (MQQueueSender) session.createSender(queue); JMSTextMessage message = (JMSTextMessage) session.createTextMessage("your_message_body"); connection.start(); sender.send(message);
更多信息:
- 为 IBM MQ 类 Java 安装的内容
- Apache Groovy - 为什么以及如何使用它
- 使用 WebSphere MQ JMS 的最简单的样本应用程序
根据您的确切要求,您可能会对 JMSToolBox 及其定义scripts
感兴趣,这些将从存储在指令中的csv
文件中读取有效负载,然后在 MQ Q 中创建并发布它们。 作为来自消息模板的 JMS 消息