C#Listener自动清除IBM MQ消息

时间:2013-11-06 12:20:27

标签: c# listener ibm-mq mq

我有一个IBM MQ的C#监听器,如下所示。这里只提到听众方法。

private void OnMessage(IMessage msg)
{
    try
    {

        ITextMessage textMsg = (ITextMessage)msg;
        Console.Write("Got a message: ");
        Console.WriteLine(textMsg.Text);

    }
    catch(Exception ex)
    {
    }
}

每当在我的队列中到达文本格式消息时,上面的侦听器正在调用,我能够读取值。

  

问题是,如果你停止监听器然后推送一条消息,那就是   消息保留在MQ Explorer中。但是如果调用了侦听器方法,那么   消息一直在“Web Sphere MQ Explorer”中删除   从侦听器方法中读取。我需要再设置一些吗?   配置,即使在我的听众阅读后仍保留我的消息?

2 个答案:

答案 0 :(得分:3)

有两种方法可以从队列中读取消息:

  • 破坏性获取(默认)
  • 使用非破坏性获取(又名浏览)

如果您只想浏览队列中的消息,请使用非破坏性获取。

答案 1 :(得分:1)

这是预期的行为。队列中的消息正由应用程序使用(意味着您的OnMessage方法)。一旦消息到达队列,WebSphere MQ就会将消息传递给等待的使用者应用程序。

如果您希望消息保留在队列中,则需要停止所有消费者应用程序。