0

我有一个 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 中。但是,如果调用了侦听器方法,则消息总是在从侦听器方法读取之后从“WebSphere MQ Explorer”中删除。即使在我的听众阅读之后,我是否需要设置更多配置来保留我的消息?

4

2 回答 2

3

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

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

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

于 2013-11-06T21:37:32.653 回答
1

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

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

于 2013-11-06T12:49:05.613 回答