WMB 6.1 で WMQ7.0 を使用する
メッセージを変換し、一部のデータを保持するためにMQRFH2.usrを使用する 1 つのフローがあります。
しかし、MQRFH2.usrがメインのメッセージ本文に含まれているという問題に直面しています。
同じコードを異なる環境に展開しましたが、この問題が発生するのは 1 つの環境だけです。
したがって、コードの問題ではないようです。構成と関係があります。
考えられる原因を教えてください。
WMB 6.1 で WMQ7.0 を使用する
メッセージを変換し、一部のデータを保持するためにMQRFH2.usrを使用する 1 つのフローがあります。
しかし、MQRFH2.usrがメインのメッセージ本文に含まれているという問題に直面しています。
同じコードを異なる環境に展開しましたが、この問題が発生するのは 1 つの環境だけです。
したがって、コードの問題ではないようです。構成と関係があります。
考えられる原因を教えてください。
キューのPROPCTL
設定を確認してください。これが に設定されているNONE
場合、動作は次のようになります。
アプリケーションがメッセージ ハンドルを作成しない場合、すべてのメッセージ プロパティが MQRFH2 から削除されます。MQRFH2 ヘッダーの名前と値のペアは、メッセージに残されます。
ドキュメント ページを数回読み、さまざまな設定でテストしPROPCTL
て、アプリが受信するメッセージ コンテンツをどのように変更するかを完全に理解してください。
MQRFH2 ヘッダーが存在する場合は、常にメッセージのペイロード部分に含まれます (これが webphere の編成方法です)。1 つ以上の MQRFH2 ヘッダー (構造) を受け取ることができます。
おそらく、あなたは1つだけを期待していて、2つを受け取っていますか? これは、メッセージデータが意味不明のままになっていることを説明します.
次のコードを使用して、メッセージの受信時にこれらのヒアリングを処理します
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);
それが役に立てば幸い。
マーティンズ