2013-04-29 310 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。