如何指示Websphere MQ不显示JMS头?

时间:2013-01-07 20:13:09

标签: jms ibm-mq

我在Linux上运行Weblogic 10.3,并且我已经建立了与Webspere MQ的桥梁。我正在从Weblogic发送一个TextMesasge,它正被转移到MQ。但当我在MQ端阅读消息时,如

// Receiver reader - my class
reader.qMgr = new MQQueueManager(qManager);
int openOptions = MQOO_INPUT_AS_Q_DEF | MQOO_OUTPUT ;

MQQueue localQueue = reader.qMgr.accessQueue(queueName, openOptions);
MQMessage msg = new MQMessage();
MQGetMessageOptions gmo = new MQGetMessageOptions(); 
localQueue.get(msg, gmo);

int n = msg.getDataLength();
System.out.println("The message is " + n + " bytes long");
String msgText = msg.readStringOfByteLength(n);
System.out.println("The message is: " + msgText);

我得到了:

消息长度为154个字节 消息是:RFH MQSTR jms_textHqueue:/// Q113575850399442 ABCDE

“ABCDE”是我的留言。

我是否以某种方式指示Websphere MQ执行JMS-> MQ转换,以便将消息简单地读为“ABCDE”?

由于

2 个答案:

答案 0 :(得分:3)

发送消息的程序应按照here所述设置TARGCLIENT parm。

请记住,所有WMQ V6.x都不支持。如果您要使用其中一个受支持的版本(所有v7.x),您将能够设置队列的PROPCTL属性,以使QMgr剥离JMS头,而不需要很少或不需要更改代码。

如果您的公司有支持协议,您可以通过Passport Advantage获取新版WMQ。新客户端免费提供SupportPac MQC75.您可以混合客户端和QMgr版本,新客户端有许多错误修复和新功能(即使在连接到较旧的QMgr时也可以使用其中的许多功能)。较新的客户端和QMgr也将具有V6代码中不存在的安全补丁。请尝试至少从客户端获得支持的版本,因为它是免费的,但最好也是QMgr。

答案 1 :(得分:0)

如果在WebSphere MQ端使用受支持的JMS API,则不必执行任何转换即可获取消息的内容。

您只需调用将返回消息内容的javax.jms.TextMessage.getText()方法(ABCDE)。