0
我正在嘗試編寫2個方法來測試是否在另一個隊列中接收到一個隊列中的已發送消息。驗證IBM MQ中的導入和導出隊列中的消息
發送方法 - 發送消息,例如 - 「消息123」 - 導出具有唯一相關ID的隊列。
Get方法
此隊列將有很多消息,不過我想只是我從高根據我的相關ID的消息。
代碼基於相關ID
properties = new Hashtable();
properties.Add(MQC.CONNECTION_NAME_PROPERTY, "connection name");
properties.Add(MQC.TRANSPORT_PROPERTY, "transport type");
properties.Add(MQC.CHANNEL_PROPERTY, "channel name");
properties.Add(MQC.CONNECT_OPTIONS_PROPERTY, MQC.MQCNO_HANDLE_SHARE_BLOCK);
mqGetMsgOpts = new MQGetMessageOptions();
mqGetMsgOpts.Options = MQC.MQGMO_BROWSE_FIRST | MQC.MQGMO_WAIT | MQC.MQOO_INQUIRE;
mqGetMsgOpts.MatchOptions = MQC.MQMO_MATCH_CORREL_ID;
mqGetMsgOpts.WaitInterval = 3000; //3 secs wait time
檢查消息的問題,現在面臨是,當我讀到的消息,我得到的所有從導入隊列中的消息。
如何獲取我發送的消息並驗證在導出隊列中接收到的消息是我的消息?
從理論上講,像進口的隊列此
message.correlationid匹配的出口隊列message.correaltionid。
謝謝,我也做了同樣的方式,正如你所說,但我不斷收到此錯誤的任何一個。 IBM.WMQ.MQException:MQRC_NO_MSG_AVAILABLE System.IO.EndOfStreamException:無法讀取超出流尾的內容。 - >消息離開隊列,並且由於數據長度變爲0而引發該消息,有什麼想法? – Sharpeye500 2013-04-27 00:19:02
MQRC_NO_MSG_AVAILABLE:檢查代碼中的匹配選項,並在獲取消息時進行校驗。它看起來像指定的correlid可能不匹配隊列中任何消息的correlid。 EndOfStreamException:似乎嘗試讀取空消息的數據。 – Shashi 2013-04-27 12:14:33