如何重置队列?在开始将消息写入队列之前,我想清除队列中的所有消息。有没有办法可以在不拨打电话的情况下重置?
MQQueueManager mqQMgr = new MQQueueManager(mqQueueManager);
MQQueue queue = mqQMgr.AccessQueue(getMessageQueue, MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_SHARED | MQC.MQOO_INQUIRE);
MQMessage对象中有一个.clearmessages,但我只能在调用get方法时访问它,我正在寻找一种方法来清除队列中的现有消息,然后才能将新消息放入队列
答案 0 :(得分:3)
队列中的消息只能通过Get
调用以编程方式清除。没有其他办法。或者,您可以使用管理控制台清除消息,但这不是您要查找的内容。
MQMessage.ClearMessage()会丢弃消息缓冲区中的所有数据,并将数据偏移量设置为零。它不会清除驻留在队列中的所有消息。
我可以问你为什么要在发新消息之前清除队列?你想解决什么问题?
答案 1 :(得分:0)
我有几个你可以使用的程序:
ClearQ是一个发布MQSC Clear Q命令的C程序,但只有在没有应用程序打开队列时才会工作(限制Clear Q命令)。 ClearQ程序可以在这里找到:http://www.capitalware.biz/mq_code_c.html
EmptyQ是一个Java程序,它使用MQGET顺序删除队列中的所有消息。可在此处找到EmptyQ:http://www.capitalware.biz/mq_code_java.html
答案 2 :(得分:0)
要清除队列中的消息,您可以使用“清除队列”PCF命令。据我所知,它比GET调用更快地清除队列,但您只能在关闭的队列中使用它。您可以在IBM MQ信息中心中阅读它:http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzac.doc/pc11350_.htm
答案 3 :(得分: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。