C# слушатель, делающий сообщение IBM MQ автоматически очищенным

У меня есть слушатель C# для IBM MQ, как показано ниже. Только метод слушателя, упомянутый здесь.

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" всегда сразу после чтения из метода слушателя. Нужно ли настраивать дополнительную конфигурацию для сохранения моих сообщений даже после того, как слушатель прочитает их?

2 ответа

Решение

Это ожидаемое поведение. Сообщение в очереди используется приложением (т.е. OnMessage метод). WebSphere MQ доставит сообщение ожидающему потребителю приложению, как только оно поступит в очередь.

Если вы хотите, чтобы сообщения оставались в очереди, то вам нужно остановить все ваши потребительские приложения.

Есть 2 способа чтения сообщений из очереди:

  • деструктивный get (по умолчанию)
  • используя неразрушающий метод get (он же просмотр)

Если вы хотите просматривать сообщения только в очереди, используйте неразрушающий метод get.

Другие вопросы по тегам