4

我在 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_text Hqueue:///Q113575850399442 ABCDE

“ABCDE”是我的信息。

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

谢谢

4

2 回答 2

3

发送消息的程序应按此处TARGCLIENT所述设置参数。

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

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

于 2013-01-08T07:42:26.710 回答
0

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

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

于 2013-01-07T21:38:06.230 回答