1

キューからイベント メッセージを取得できます。メッセージのプロパティを取得します。MQEVENT 型が PCF 形式であると確信していますが、そのメッセージを人間が読める形式に変換する方法に関する適切なドキュメントを見つけることができないようです。

AccountingToken
ApplicationIdData
ApplicationOriginData
BackoutCount 0
BackoutCount 0
CharacterSet 437
CompletionCode 0
CorrelationId System.Byte[]
DataLength 236
DataOffset 0
Encoding 546
Expiry -1
Feedback 0
Format MQEVENT
GroupId System.Byte[]
MessageFlags 0
MessageId System.Byte[]
MessageLength 236
MessageSequenceNumber 1
MessageType 8
オフセット 0
OriginalLength -1
永続性 0
優先度 0
PutApplicationName NTPMFG01
PutApplicationType 7
PutDateTime 3/19/2010 10:29:08 PM
ReasonCode 0
ReasonName MQRC_OK
ReplyToQueueManagerNameNTPMFG01
ReplyToQueueName
レポート 0
TotalMessageLength 236
UserId
バージョン 1

そしてメッセージはこちら。
$ ? - ? ? ? ? D¯0 MFG01? D - 0 MF G.CUST.CAT ? ? # ¤ ? ? $ ? ? ? % ? ? &?

4

1 に答える 1

1

if (myMQMessage.Format.CompareTo(MQC.MQFMT_EVENT) == 0) 2回処理する必要があると思います。最初に MQCFH を使用して PCF ヘッダーを処理します。

BuildMQCFH(new IBM.WMQ.PCF.MQCFH(myMQMessage));

public void BuildMQCFH(IBM.WMQ.PCF.MQCFH eventMessageHeader) {
  int reasonForEvent = eventMessageHeader.Reason;
}

次に、DataOffset を 0 にリセットする必要があります

myMQMessage.DataOffset = 0;

次に、PCFParameter を使用して PCF パラメータを処理します。BuildPcfMessage(新しい IBM.WMQ.PCF.PCFMessage(myMQMessage));

public void BuildPcfMessage(IBM.WMQ.PCF.PCFMessage pcfMessage) {
  IBM.WMQ.PCF.PCFParameter[] pcfParameters = pcfMessage.GetParameters();
  afflictedQueueManager = pcfParameters[0].GetValue().ToString();
  afflictedQueue = pcfParameters[1].GetValue().ToString();
}

MQMessage、PCF.PCFMessage、および MQCF はそれぞれ、後でリセットせずにオフセットを移動する readbyte(s) を実行します。

于 2010-04-02T19:02:53.003 に答える