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
· 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-摘自网络