此代码将消息发送到 Q。MQEnvironment 静态值已设置。但是 MQEnvironment 是 没有在管理器的任何地方引用 。那么如何提供属性(主机名、 channel 、端口、CCSID)来连接到MQ?

    MQEnvironment.hostname ="10.XX.XXX.XX";

    MQEnvironment.channel = "SYSTEM.DEF.SVRCONN";

    MQEnvironment.port = 1415;

    MQEnvironment.CCSID = 819;

    System.out.println("connecting MQQueueManager...");
    try {
        MQQueueManager manager = new MQQueueManager("SXX");

        MQQueue queue = null;

        int openOptions = MQC.MQOO_OUTPUT; //MQC.MQOO_INPUT_AS_Q_DEF |

        queue = manager.accessQueue("Q_NAME",
                                            openOptions,
                                            null, null, null);
        // send message
        MQMessage sendMessage = new MQMessage();

        sendMessage.writeObject("TEST MESSAGE@@@@@@@@@@@@@@@@@");
        MQPutMessageOptions pmo = new MQPutMessageOptions();

        queue.put(sendMessage, pmo);

最佳答案

MQQueueManager 对象在与队列管理器建立连接之前会检查这些值是否已在 MQEnvironment 类中设置。

此外,不要使用 SYSTEM.DEF.SVRCONN channel ,因为 (1) 它违反了最佳实践,并且 (2) 它是一个仅供队列管理器使用的 SYSTEM 对象。只需创建或让 MQAdmin 为您创建 SVRCONN channel 。即 TEST.CHL

关于Java MQEnvironment 静态属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20257300/

10-14 10:35