此代码将消息发送到 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/