1

如何重置队列?在开始将消息写入队列之前,我想清除队列中的所有消息。有什么方法可以在不拨打电话的情况下重置?

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

MQMessage 对象中有一个 .clearmessages,但我只能在调用 get 方法时访问它,我正在寻找一种方法来清除队列中的现有消息,然后才能将新消息放入队列。

4

4 回答 4

3

队列中的消息只能通过Get调用以编程方式清除。没有其他办法。或者,您可以使用管理控制台来清除消息,但这不是您想要的。

MQMessage.ClearMessage() 丢弃消息缓冲区中的所有数据并将数据偏移设置回零。它不会清除队列中的所有消息。

我可以问你为什么要在放入新消息之前清除队列吗?你想解决什么问题?

于 2013-04-30T04:06:21.917 回答
1

要从队列中清除消息,您可以使用“清除队列”PCF 命令。据我所知,它比 GET 调用更快地清除队列,但您只能在关闭的队列上使用它。您可以在 IBM MQ 信息中心阅读:http: //publib.boulder.ibm.com/infocenter/wmqv7/v7r0/topic/com.ibm.mq.csqzac.doc/pc11350_.htm

于 2013-05-03T09:01:21.537 回答
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

于 2013-04-30T15:21:11.107 回答
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。

于 2013-12-10T01:19:14.773 回答