我过去曾将 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
提交
取消