【问题标题】:Using JMS to connect to IBM MQ使用 JMS 连接到 IBM MQ
【发布时间】:2023-03-05 18:09:01
【问题描述】:

我想使用 JMS 连接到 IBM MQ。 如何指定 queuemanager、channel 和其他属性?

【问题讨论】:

    标签: jms ibm-mq


    【解决方案1】:

    使用 JNDI 进行 connectionFactory/destinations 查找,为 InitialContext 提供以下属性:

    java.naming.provider.url=<ip>:<port, default is 1414>/<channel name, default channel is SYSTEM.DEF.SVRCONN>
    java.naming.factory.initial=com.ibm.mq.jms.context.WMQInitialContextFactory
    java.naming.security.authentication=none
    java.naming.security.credentials=
    java.naming.security.principal=
    

    使用WAS(Websphere Application Server)队列,属性如下:

    java.naming.provider.url=iiop://<ip>:<port, the defualt is 2809>
    java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory
    java.naming.security.authentication=none
    java.naming.security.credentials=
    java.naming.security.principal=
    

    剩下的如下:

    Properties config = new Properties();
    config.load(new FileInputStream("connectionConfig.properties"));// this file would contain the properties above
    InitialContext context = new InitialContext(config);
    ConnectionFactory factory = (ConnectionFactory) context.lookup("ConnectionFactory");// connection factory name
    Destination destination = (Destination) context.lookup("destination");// queue/topic name
    

    【讨论】:

    • 我在任何地方都找不到 com.ibm.websphere.naming.WsnInitialContextFactory,求助
    【解决方案2】:

    您需要创建一个 MQQueueConnectionFactory bean 并在其中设置所需的属性。

    <bean id="queueConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
        <property name="transportType" ref="transport" />
        <property name="queueManager" value="queueManagerName" />
        <property name="hostName" value="hostName" />
        <property name="port" value="portNumber" />
        <property name="channel" value="channelName" />
    </bean>
    <bean id="transport"
        class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
        <property name="staticField">
            <value>
                com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP
            </value>
        </property>
    </bean>
    

    【讨论】:

      【解决方案3】:

      这里的a tutorial 可能会有所帮助:

      另外,请务必使用正确版本的 WMQ 的文档。 V7.0 是最新的,并且在 2011 年 9 月之前支持 v6.0。无论您使用哪个版本,请查看使用 Java 手册以获取正确的版本:

      v6.0 manual
      v7.0 manual

      【讨论】:

        【解决方案4】:

        使用 IBM 客户端 API

                    import com.ibm.mq.MQEnvironment;
                    import com.ibm.mq.MQQueue;
                    import com.ibm.mq.MQQueueManager;
                    import com.ibm.mq.constants.CMQC;
        
                    public class QueueMonitoring {
        
                        public static void main(String[] args) {
                            int openOptions = CMQC.MQOO_INQUIRE | CMQC.MQOO_INPUT_AS_Q_DEF;
                            MQEnvironment.hostname = "192.168.59.103";
                            MQEnvironment.port = 1414;
                            MQEnvironment.channel = "SYSTEM.DEF.SVRCONN";
                            MQEnvironment.properties.put(CMQC.TRANSPORT_PROPERTY,CMQC.TRANSPORT_MQSERIES);
        
                            MQQueueManager qMgr;
                            try {
                                qMgr = new MQQueueManager("QM1");
                                MQQueue destQueue = qMgr.accessQueue("DOCKERQ", openOptions);
                                System.out.println("Queue size:" + destQueue.getCurrentDepth());
                                destQueue.close();
                                qMgr.disconnect();
        
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
        
                        }
                        }
        

        【讨论】:

          【解决方案5】:

          最好的方法是使用命令行。太有趣了。您可以从http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/csqzaj05.pdf下载命令参考书

          如果您的 MQ 服务器在 Windows 机器上运行,您可以选择使用 MQExplorer 并以图形方式对其进行配置。

          【讨论】:

            猜你喜欢
            • 2019-12-31
            • 2020-04-23
            • 2018-02-08
            • 1970-01-01
            • 2021-08-04
            • 1970-01-01
            • 1970-01-01
            • 2022-08-19
            • 1970-01-01
            相关资源
            最近更新 更多