【问题标题】:How to connect to IBM MQ from JMS publisher without JNDI properties?如何在没有 JNDI 属性的情况下从 JMS 发布者连接到 IBM MQ?
【发布时间】:2017-12-18 20:53:15
【问题描述】:

我一直在尝试从 JMeter JMS 发布者连接到 IBM MQ。找不到正确的“初始上下文工厂”和“连接工厂”值以在没有 JNDI 属性的情况下使用。我在 LIB 文件夹中有所有 MQ jar。

我有以下信息 - 主机名 - Venus,端口 - 21717,目标队列名称 - request.queue,队列管理器 - venus.QMGR,通道 - venus.server.chl (无需授权)。

我的要求 - 使用具有上述详细信息的 JMS 发布者连接到 IBM MQ。但我无法理清提供者 URL、初始上下文工厂和连接工厂的内容。你能帮忙吗,因为这在过去的两周里一直困扰着我,但还没有找到解决方案? 如果您能告诉我在 JMS 发布者中填充上述值的位置以及连接到 IBM MQ 的位置,那就太好了。

我也尝试过使用 user.classpath=/folder/with/mq/jars,但它不起作用,所有 jar 都已就位,JMeter 重新启动仍然没有运气。

注意:这两周我浏览了所有网站,但运气不佳。

【问题讨论】:

  • 是的,我已经看到了,但这没有帮助。我已经完成了所有这些事情,但仍然无法使用 JMS 发布者/点对点连接到 MQ。

标签: jmeter jms ibm-mq publisher


【解决方案1】:

根据您的具体要求,您可能对JMSToolBox 感兴趣,并且它可以定义scripts,它将从存储在目录中的csv 文件中读取有效负载,然后在MQ Q 中创建并发布它们 作为来自消息模板的 JMS 消息

【讨论】:

    【解决方案2】:

    配置步骤示例如下:

    1. javax.jms-api.-x.x.x jar 添加到JMeter Classpath
    2. mq-allclient-x.x.x.x.jar 添加到JMeter 类路径
    3. JSR223 Sampler 添加到您的测试计划中
    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);
      

    更多信息:

    【讨论】:

    • 我已经尝试过使用代码并且它正在工作(我也有我的代码)但我正在寻找 JMS 发布者/点对点配置 cz 进行性能测试,代码不能正确执行csv 文件,当线程用户数更多时。我已经验证并且它在 csv 中多次选择相同的条目。(csv 数据集配置:是 true,true,false)。我需要脚本每次选择单个条目,即使线程用户计数两个或更多。它与发布者一起工作,但我不知道发布者中 IBM MQ 的配置,因此卡住了。请帮忙
    猜你喜欢
    • 2015-09-25
    • 2011-08-16
    • 2019-06-29
    • 2023-03-05
    • 2015-06-15
    • 1970-01-01
    • 2019-01-28
    • 2019-12-31
    • 1970-01-01
    相关资源
    最近更新 更多