MQRFH2.usr进入主消息体

时间:2013-01-03 08:57:13

标签: websphere ibm-mq websphere-6.1

将WMQ7.0与WMB 6.1一起使用

我有一个流程,我正在转换消息并使用 MQRFH2.usr 来保存一些数据。

但是,我正面临着 MQRFH2.usr 进入主要邮件正文的问题。

我在不同的环境中部署了相同的代码,但我只在一个环境中遇到此问题。

因此,似乎不是代码问题。它与配置有关。

请说明可能的原因。

2 个答案:

答案 0 :(得分:1)

检查队列的PROPCTL设置。如果将其设置为NONE,则行为如下:

  

如果应用程序没有创建消息句柄,则显示所有消息   属性将从MQRFH2中删除。 MQRFH2中的名称/值对   标题留在邮件中。

请务必多次阅读doc page,并尝试使用其他设置进行测试,以全面了解PROPCTL如何修改应用收到的讯息内容。

答案 1 :(得分:0)

MQRFH2标头(如果存在)始终位于消息的有效负载部分(这就是webpshere组织它的方式)。您可以接收一个或多个MQRFH2头(结构)。

也许你只期待一个并且正在收到两个?这可以解释您的留言数据留下的胡言乱语。

我使用以下代码在收到消息时处理这些问题

MQRFH2 header = null;

// Find and store message length
int msglen = replyMessage.getMessageLength();

MQHeaderList list = new MQHeaderList(replyMessage);
int indexOf = list.indexOf("MQRFH2");
if (indexOf >= 0) {
    header = (MQRFH2) list.get(indexOf);
    msglen = msglen - header.size();
}

String msgText = replyMessage.readStringOfCharLength(msglen);

希望它有所帮助。

Martins的