2013-01-03 73 views
1

來使用WMQ7.0與WMB 6.1MQRFH2.usr主消息體

我有一個流,其中我改造的消息,並使用MQRFH2.usr舉辦一些數據。

但是,我面臨的問題是主消息正文中會出現MQRFH2.usr

我在不同的環境中部署了相同的代碼,但我只在一個環境中得到這個問題。

所以,它似乎不是一個代碼問題。它與配置有關。

請注意,建議可能的原因是什麼。

+0

我想這是一個更坦布爾韋德批我...:d – nitgeek

+0

都在使用什麼版本的WMQ QMgrs的? –

+0

@ T.Rob所有隊列管理員都在WMQ 7.0上 – nitgeek

回答

1

檢查隊列的PROPCTL設置。如果設置爲NONE,則行爲如下:

如果應用程序不創建一個消息句柄,所有的消息 屬性是從MQRFH2刪除。消息中留下了MQRFH2 標題中的名稱/值對。

一定要通過幾次讀doc page,也許使用不同的設置進行測試,以充分了解如何PROPCTL修改您的應用程序接收到該消息的內容。

+0

感謝您提供的信息。實際上,我的問題是MQMD.FORMAT應該是'MQRFH2',但它是'MQSTR'。但是,仍然不知道它是如何與WMB 8和WMQ 7.0組合工作正常的,它只能用WMB6.1和WMQ 7.0組合失敗。 – nitgeek

+0

運行一個跟蹤。我希望你會發現WMB 6沒有設置'MQGMO_PROPERTIES',而是WMB 8將它設置爲[這裏]描述的值之一(http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/話題/ com.ibm.mq.explorer.doc/e_properties_gmo.htm)。 –

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); 

希望它可以幫助到處理器這些heards。

馬丁斯

相關問題