我正在尝试将原始 MQSTR 消息放入 WebSphere MQ 队列。根据this ,我能做到:
((com.ibm.mq.jms.MQQueue) queue).setTargetClient(JMSC.MQJMS_CLIENT_NONJMS_MQ);
表明它是一个非JMS队列。 (我知道 JMSC.MQJMS_CLIENT_NONJMS_MQ
已被弃用 - 这与这个问题无关。)但是,我一直在使用 com.ibm.mq.MQQueue
而不是 com.ibm.mq.jms.MQQueue
。从前者到后者的转换不起作用。此外,只有 com.ibm.mq.jms.MQQueue
具有 setTargetClient
方法。
为什么有两个 MQQueue
类,我应该使用哪一个?我想使用主机名、 channel 名称和队列管理器名称(不是 JNDI)在 Java 程序中从外部连接到 z/OS 队列。
最佳答案
嗯。我不想给出“RTM”答案,但这确实是答案。有 2 个 JAVA MQ API:1 个用于“Java 的 MQ 类”,1 个用于“JMS 的 MQ 类”。
注意:“MQ 类用于 JMS”会将 JMS header (又名 MQRFH2)放在消息上,而“MQ 类用于 Java”则不会。
因此,如果您正在编写常规 Java/MQ 应用程序,则不要使用“用于 JMS 的 MQ 类”,只需使用“用于 Java 的 MQ 类”即可。
关于java - com.ibm.mq.MQQueue 与 com.ibm.mq.jms.MQQueue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28033864/