我有一个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”中删除 从侦听器方法中读取。我需要再设置一些吗? 配置,即使在我的听众阅读后仍保留我的消息?
答案 0 :(得分:3)
有两种方法可以从队列中读取消息:
如果您只想浏览队列中的消息,请使用非破坏性获取。
答案 1 :(得分:1)
这是预期的行为。队列中的消息正由应用程序使用(意味着您的OnMessage
方法)。一旦消息到达队列,WebSphere MQ就会将消息传递给等待的使用者应用程序。
如果您希望消息保留在队列中,则需要停止所有消费者应用程序。