我已經遇到了一個令人沮喪的問題,通過它的深度瀏覽一個隊列。我明白,打開的選項中需要使用MQOO_BROWSE選項打開隊列。然後在第一次讀取時使用獲取Messsage選項MQGMO_BROWSE_FIRST進行GET。最後,後續的GET應該使用MQGMO_BROWSE_NEXT選項。如何通過所有消息瀏覽Websphere MQ隊列?
問題是,我的嘗試只能檢索第一條消息!在第二次GET時,即使使用MQGMO_BROWSE_NEXT,該方法也會拋出MQRC_NO_MSG_AVAILABLE,即使隊列中有5條消息!
這裏是我使用的代碼:
IList<string> Messages = new List<string>();
_queueManager = new MQQueueManager(QueueManagerName);
int openOptions = MQC.MQOO_BROWSE // open queue for browsing
_queue = QManager.AccessQueue(QueueName, openOptions);
MQGetMessageOptions mqGetMsgOpts = new MQGetMessageOptions();
mqGetMsgOpts.Options = MQC.MQGMO_BROWSE_FIRST;
MQMessage msg = new MQMessage();
_queue.Get(msg, mqGetMsgOpts);
MQGetMessageOptions mqGetNextMsgOpts = new MQGetMessageOptions();
mqGetNextMsgOpts.Options = MQC.MQGMO_BROWSE_NEXT;
try
{
while (true)
{
string messageText = msg.ReadString(msg.MessageLength);
Messages.Add(messageText);
_queue.Get(msg, mqGetNextMsgOpts);
}
}
catch (MQException ex)
{
// Handle it
}
感謝您回來並回答您自己的問題。 – nik0lias
這幫了很多..謝謝 – GVR