RabbitMQ 消费端 Client CPU 100%的解决办法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Func<bool> run = () =>
           {
               try
               {
                   using (IConnection conn = cf.CreateConnection())
                   {
                       using (IModel channel = conn.CreateModel())
                       {
                           var consumer = createConsumer(channel);
                           while (channel.IsOpen)
                           {
                               Thread.Sleep(10);
                               BasicDeliverEventArgs ea = null;
                               try
                               {
                                   ea = consumer.Queue.DequeueNoWait(null);
                                   if (ea == null) continue;
                               }
 
                               catch (Exception ex)
                               {
                                   TraceLogHelper.WriteError("RabbitMQ", "【里面】", ex.StackTrace);
                                   break;
                               }
                               var body = ea.Body;
                               var message = Encoding.UTF8.GetString(body);
                               var b = func(message);
                               if (b)
                               {
                                   channel.BasicAck(ea.DeliveryTag, false);
                                   Console.WriteLine("接收消息成功:" + message);
                               }
 
      
                           }
                       }
                   }
                   return true;
               }
               catch (Exception ex)
               {
                   TraceLogHelper.WriteError("RabbitMQ", "[外层]", ex.StackTrace);
                   return false;
               }
           };

  

增加一个 Thread.Sleep(10);即可解决。

 

以后遇到无线循环的时候,需要加Sleep

posted @   iDEAAM  阅读(3533)  评论(1编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
历史上的今天:
2016-01-09 How to set JAVA environment variables in Linux or CentOS
2016-01-09 How To Setup Apache Hadoop On CentOS
2013-01-09 结合IIS 7、ARR与Velocity建设高性能的大型网站 -摘自网络
2013-01-09 IIS request filtering woes with ARR(Application Request Routing) -摘自网络
2013-01-09 Configuring SharePoint 2010 and ADFS v2 End to End-摘自网络
点击右上角即可分享
微信分享提示