C#MQ Api如果在空队列的情况下获取异常,如何获取消息

kos*_*oss 4 c# ibm-mq

我必须定期检查Websphere MQ中队列中的消息.我没有找到更好的方法,而不是尝试获取消息并处理2033原因代码(这是NO_MSG_AVAILABLE),如下所示:

try
{
    // ...
    inQueue.Get(message);
}
catch (MQException exception)
{
    if (exception.ReasonCode != 2033)
        throw;
}
Run Code Online (Sandbox Code Playgroud)

有更好的方法从队列中获取消息吗?我认为可能有一些我不知道的openOptions标志,在没有可用消息时不会抛出异常,而是返回null.

小智 6

有三种方法可以避免或减少这种轮询机制.在这里他们优雅(越高越好):

  1. 具有等待间隔UNLIMITED和MQGMO_FAIL_IF_QUIESCING的MQGET
  2. 使MQServer触发您的应用程序
  3. 回调函数 - 两侧都带有MQ V7的新功能