如何重置IBM MQ中的队列
本文关键字:队列 MQ 何重置 IBM | 更新日期: 2023-09-27 18:11:20
如何重置队列?在开始将消息写入队列之前,我想清除队列中的所有消息。有没有办法不调用get就能重置?
MQQueueManager mqQMgr = new MQQueueManager(mqQueueManager);
MQQueue queue = mqQMgr.AccessQueue(getMessageQueue, MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_SHARED | MQC.MQOO_INQUIRE);
在MQMessage对象中有一个.clearmessages,但是只有当我调用get方法时,我才能访问它,我正在寻找一种方法来清除队列中现有的消息,然后才能将新消息放入队列。
队列中的消息只能通过Get
调用被编程清除。没有别的办法。或者,您可以使用管理控制台来清除消息,但这不是您想要的。
MQMessage.ClearMessage()丢弃消息缓冲区中的任何数据,并将数据偏移量设置回零。它不会清除驻留在队列中的所有消息。
我可以问一下你为什么要在放新消息之前清除队列吗?你想解决什么问题?
要从队列中清除消息,可以使用'Clear queue ' PCF命令。据我所知,它清除队列的速度比GET调用快,但是您只能在关闭的队列上使用它。您可以在IBM MQ Infocenter中了解它:http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzac.doc/pc11350_.htm
我有几个程序可以使用:
-
ClearQ是一个发出MQSC ClearQ命令的C程序,但它只会在没有应用程序打开队列(ClearQ命令的限制)的情况下工作。ClearQ程序可以在这里找到:http://www.capitalware.biz/mq_code_c.html
-
EmptyQ是一个Java程序,它使用MQGET顺序地从队列中删除所有消息。EmptyQ可以在这里找到:http://www.capitalware.biz/mq_code_java.html
也许这会有帮助!
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;
}
我删除了不重要的代码。