【问题标题】:How to instruct Websphere MQ not to display JMS header?如何指示 Websphere MQ 不显示 JMS 标头?
【发布时间】:2013-07-30 13:39:07
【问题描述】:

我在 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”?

谢谢

【问题讨论】:

  • 什么版本的 WMQ QMgr 和 WMQ 客户端?如何让它做你想做的事情的细节因版本而异。
  • 我正在运行 WMQ 管理器 6.0.2。我用这个版本附带的 jar 编译我的客户端应用程序

标签: jms ibm-mq


【解决方案1】:

发送消息的程序应该按照here 的描述设置TARGCLIENT 参数。

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

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

【讨论】:

  • 谢谢,设置 TARGCLIENT 有效。我们将尝试升级到 WMQ7
【解决方案2】:

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

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

【讨论】:

  • 接收应用程序超出了我的控制范围,并且不使用 JMS API,我正在尝试模拟它。在我的站点上,Weblogic 通过桥将消息发送到在我们这边运行的队列管理器,然后将其放入远程队列。所以我在寻找是否可以以某种方式配置我的队列管理器并告诉他将 JMS 转换为 MQ。谢谢
  • @Aleksandr Weblogic JMS 和 Websphere MQ 之间有什么问题?
  • 消息可以正常发送,但是当我从 MQ 读取它时,我希望只看到没有 JMS 信封的“ABCDE”
猜你喜欢
  • 1970-01-01
  • 2012-08-27
  • 2015-06-19
  • 2013-01-09
  • 2010-10-28
  • 1970-01-01
  • 2015-12-20
  • 2016-10-31
  • 2013-04-11
相关资源
最近更新 更多