为了账号安全,请及时绑定邮箱和手机立即绑定

MQQueueManager 消息池

MQQueueManager 消息池

C#
四季花海 2021-10-31 18:57:09
我过去曾将 RabbitMq 用作 MessageQueue 并且在收到消息时触发事件非常简单。我查看了 IBM 安装程序提供的 .NET 源代码,但我发现处理它的方法并不好。查看示例 SimpleSubscribe 它对池做了这样的事情// getting messages continuouslyfor (int i = 1; i <= numberOfMsgs; i++){    // creating a message object    message = new MQMessage();    try    {        topic.Get(message);        Console.WriteLine("Message " + i + " got = " + message.ReadString(message.MessageLength));        message.ClearMessage();    }    catch (MQException mqe)    {        if (mqe.ReasonCode == 2033)        {            ++time;            --i;            Console.WriteLine("No message available");            Thread.Sleep(1000);            //waiting for 10sec            if (time > 10)            {                Console.WriteLine("Timeout : No message available");                break;            }            continue;        }        else        {            Console.WriteLine("MQException caught: {0} - {1}", mqe.ReasonCode, mqe.Message);        }    }}其中数字numberOfMsgs是作为参数传递的整数。如果我通过 -1 它可能会无限池化,但我认为这不是一个好方法。这导致我以特定的时间间隔池化队列,然后可能会以 100% 的速度旋转一个线程,我不放有Thread.Sleep 没有人有更好的方法?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 225 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信