默认情况下,RabbitMq收到消息后,就向消费者全部推送。但是如果rabbitmq队列里消息过多,且消息的数量超过了消费者处理能力, 就会导致客户端超负荷崩溃。此时我们可以通过 prefetchCount 限制每个消费者在收到下一个确认回执前一次可以最大接受多少条消息。即如果设置prefetchCount =1,RabbitMQ向这个消费者发送一个消息后,再这个消息的消费者对这个消息进行ack之前,RabbitMQ不会向这个消费者发送新的消息

 // 每个客户端每次最后获取N个消息
channel.basicQos(1);

订阅队列消息不控制接收速率

不使用channel.BasicQos 控制 prefetchCount 数量:

         var consumer = new EventingBasicConsumer(channel);consumer.Received += (ch, ea) =>{var body = ea.Body.ToArray();var msg = Encoding.UTF8.GetString(body);Console.WriteLine(msg);// copy or deserialise the payload// and process the message// ...channel.BasicAck(ea.DeliveryTag, false);Thread.Sleep(1000);};String consumerTag = channel.BasicConsume("mytest", false, consumer);

订阅队列消息控制接收速率

 channel.BasicQos(0, 1, true); //每次从队列里取出一条消息;var consumer = new EventingBasicConsumer(channel);consumer.Received += (ch, ea) =>{var body = ea.Body.ToArray();var msg = Encoding.UTF8.GetString(body);Console.WriteLine(msg);// copy or deserialise the payload// and process the message// ...channel.BasicAck(ea.DeliveryTag, false);Thread.Sleep(1000);};String consumerTag = channel.BasicConsume("mytest", false, consumer);

(Qos 相当于把 connection 只限制了一个channel;)

本文由博客一文多发平台 OpenWrite 发布!

rabbitmq使用basicQos控制速率相关推荐

  1. cesium的clock开始,结束,控制速率

    开始 viewer.clock.shouldAnimate = true; 结束 window.viewer.clock.shouldAnimate = false; 速率调整 viewer.cloc ...

  2. 深入理解RabbitMQ中的prefetch_count参数

    目录 prefetch_count参数的含义 RabbitMQ客户端中prefetch_count源码跟踪 prefetch_count参数使用 prefetch_count参数最佳实践 小结 pre ...

  3. 消息队列重要机制讲解以及MQ设计思路(kafka、rabbitmq、rocketmq)

    目录 <Kafka篇> 简述kafka的架构设计原理(入口点) 消息队列有哪些作用(简单) 消息队列的优缺点,使用场景(基础) 消息队列如何保证消息可靠传输 死信队列是什么?延时队列是什么 ...

  4. RabbitMQ 学习笔记

    RabbitMQ 学习笔记 RabbitMQ 学习笔记 1. 中间件 1.1 什么是中间件 1.2 为什么要使用消息中间件 1.3 中间件特点 1.4 在项目中什么时候使用中间件技术 2. 中间件技术 ...

  5. RabbitMQ狂神说笔记(RabbitMQ B站狂神说笔记、KuangStudy、学相伴飞哥)

    一. 引用文章 RabbitMQ狂神说笔记(B站狂神说笔记.KuangStudy.学相伴飞哥) RabbitMQ狂神说笔记(B站狂神说笔记.KuangStudy.学相伴飞哥)百度云盘地址,提取码:07 ...

  6. 狂神RabbitMQ

    RabbitMQ笔记 一.中间件 1.什么是中间件 1.什么是中间件 我国企业从20世纪80年代开始就逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,一个企业可能同时运行 ...

  7. 【学相伴】狂神说 RabbitMQ笔记(简单使用RabbitMQ)

    目录 什么是rabbitMQ 使用docker安装RabbitMQ,如果没有使用过docker的可以看这篇文章https://blog.csdn.net/qq_44716544/article/det ...

  8. 消息中间件---RabbitMQ

    rabbitmq和spring是同一个公司,支持性最好 1.什么是中间件 中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分.人们在使用中间件时, ...

  9. RabbitMQ【RabbitMQ】

    RabbitMQ[RabbitMQ] 前言 说明 推荐 RabbitMQ 一.中间件 1.什么是中间件 2.中间件技术及架构的概述 3.基于消息中间件的分布式系统的架构 4.消息队列协议 5.消息队列 ...

最新文章

  1. Python TypeError: ‘int‘ object is not iterable
  2. 主成分分析(PCA)Python代码实现
  3. 51单片机多任务操作系统的原理与实现
  4. show controller e1
  5. MED-V服务器的部署与配置
  6. oracle手工收集awr报告_oracle手工生成AWR报告方法记录-阿里云开发者社区
  7. 第1章 ssh命令和SSH服务详解
  8. Ubuntu8.10安装小记
  9. SQLyog简介和使用
  10. 信息系统分析与设计课程心得
  11. 图论与复杂网络建模工具Networkx的四种网络模型
  12. 工作记忆的认知神经科学
  13. sx1278组网-子设备
  14. 微信小程序点击获取昵称头像
  15. 程序员除了代码还应该有什么
  16. FFMPEG监控拉流,向流媒体服务器推流
  17. HMS Core华为分析丨受众细分,多场景促进精益运营
  18. 【三维路径规划】基于matlab复杂三维地形的无人机路径规划【含Matlab源码 2171期】
  19. 机器人示教编程与离线编程的选择
  20. 爬虫配套学习-前端学习笔记05-表单

热门文章

  1. 基于mysql的高校学生管理系统_基于Web的学生考勤管理系统的设计与实现(Struts2,MySQL)...
  2. 用友SPS和运行维护费区别的详解
  3. 数据结构——顺序表的逆置
  4. f12弹出debug_调试Javascript代码(浏览器F12及VS中debugger关键字)
  5. php输出语句,php的输出语句是什么
  6. 云HIS管理系统源码,SaaS模式
  7. 如何直接在博客或前端html网页上添加L2Dwidget.js L2D网页二次元动画人物
  8. c#处理引用程序集带有黄色叹号的方法
  9. 手把手教你写网络爬虫(2):迷你爬虫架构
  10. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java视频管理系统98vta