2013-04-29 90 views
1

如何重置隊列?在開始將消息寫入隊列之前,我想清除隊列中的所有消息。有沒有什麼辦法可以在沒有打電話的情況下重置?如何在IBM MQ中重置隊列?

MQQueueManager mqQMgr = new MQQueueManager(mqQueueManager); 
MQQueue queue = mqQMgr.AccessQueue(getMessageQueue, MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_SHARED | MQC.MQOO_INQUIRE); 

有一個在MQMessage對象.clearmessages,但我可以訪問,只有當我調用get方法,我正在尋找一種方法來清除在隊列中的現有消息,之前,我可以把一個新的消息進入隊列。

回答

3

只有Get調用才能以編程方式清除隊列中的消息。沒有其他辦法。或者,您可以使用管理控制檯清除消息,但這不是您要查找的內容。

MQMessage.ClearMessage()丟棄在消息緩衝器任何數據並設置該數據偏移量返回到零。它並不清除隊列中的所有消息。

我可以問你爲什麼要在發送新消息之前清除隊列嗎?你想解決什麼問題?

+0

謝謝,2個應用程序將被用於將消息放入同一個隊列/從同一個隊列中獲取消息,我想確保隊列是空的,然後以我的應用程序(以編程方式)進行/獲取。 – Sharpeye500 2013-04-30 04:42:21

0

也許這會幫助!

private Color[] FloodTest(Color[] color, TouchLocation touch, Texture2D tex) 
    { 

     Queue<Point> q = new Queue<Point>(); 
     q.Enqueue(pt); 
     while (q.Count > 0) 
     { 
      if (q.Count > 800000) break; 
     } 

     q.Clear(); 
     q = null; 
     return color; 
    } 

我刪除了不重要的代碼。請看q.Count。