2010-03-26 50 views
1

我可以從隊列中獲取事件消息。我收到消息屬性。我很確定MQEVENT類型是PCF格式,但我似乎無法找到任何有關如何接收該消息並將其轉化爲可讀格式的良好文檔。如何在c#中讀取格式類型爲MQEVENT的IBM WebSphere MQ消息

AccountingToken
ApplicationIdData
ApplicationOriginData
BackoutCount 0
BackoutCount 0
CHARACTERSET 437
CompletionCode 0
的correlationID System.Byte []
數據長度236
DataOffset 0
編碼546
期滿-1
反饋0
格式MQEVENT
的GroupId System.Byte []
MessageFlags 0
的MessageId System.Byte []
MessageLength 236
MessageSequenceNumber 1
消息類型8
偏移0
OriginalLength -1
持久性0
優先級0
PutApplicationName NTPMFG01
PutApplicationType 7
PutDateTime 2010年3月19日下午10時29分08秒
ReasonCode 0
ReasonName MQRC_OK
ReplyToQueueManagerNameNTPMFG01
ReplyToQueueName
報告0
TotalMessageLength 236
用戶ID
第1版

和這裏是消息。
$? - ? ? ? ? D 0 MFG01? D - 0 MF G.CUST.CAT? ? #? ? $? ? ? %? ? &?

回答

1

if(myMQMessage.Format.CompareTo(MQC.MQFMT_EVENT)== 0) 我認爲需要處理兩次。 第一工藝與MQCFH

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

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

則必須在與DataOffset PCFParameter重置爲0

myMQMessage.DataOffset = 0; 

第二工藝的PCF參數。 BuildPcfMessage(new IBM.WMQ.PCF.PCFMessage(myMQMessage)); BuildPcfMessage(new 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(多個)移動與出復位之後的偏移量。