【问题标题】:How to reset a queue in IBM MQ?如何在 IBM MQ 中重置队列?
【发布时间】:2014-11-12 21:58:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# ibm-mq


    【解决方案1】:

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

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

    请问您为什么要在放入新消息之前清除队列?你想解决什么问题?

    【讨论】:

    • 谢谢,将使用 2 个应用程序向/从同一个队列发送/获取消息,我想确保队列是空的,然后再从我的应用程序发送/获取消息(以编程方式)。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我有几个你可以使用的程序:

      【讨论】:

        【解决方案4】:

        也许这会有所帮助!

         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。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-12
          • 1970-01-01
          • 2022-09-29
          • 2021-01-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多