如何在没有 JNDI 属性的情况下从 JMS 发布服务器连接到 IBM MQ?



我一直在尝试从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重新启动仍然没有运气。

注意:在这两周里,我已经浏览了所有网站,但没有任何运气。

示例配置步骤如下所示:

  1. 将 javax.jms-api.-x.x.x jar 添加到 JMeter 类路径
  2. 将 mq-allclient-x.x.x.x.jar 添加到 JMeter 类路径
  3. 将 JSR223 采样器添加到您的测试计划中
  4. 将以下代码放入"脚本"区域:

    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 消息

最新更新