## 消费端限流
1. 假设rabbitmq服务器上有上万条未处理的消息,我们随便打开一个消费客户端,那么巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据;导致崩溃;
2. 一般生产端无法做控制,否则业务不能进行下去了,只能通过在消费端做限流;
## 服务质量保证
1. rabbitmq提供了一种qos(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息(通过基于consume或channel设置Qos的值)未被确认前,不进行消费新的消息;
2. 在实际工作中一定将autoack设为false,通过手动的方式来ack,在一定的消息数目没有被ack之前,消息是不会被推送到消费端的;
3. void BasicQos(unit prefetchSize,ushort perfetchCount,bool global);
## BasicQos
1. prefetchSize : 0 ,消费的单条消息大小限制,0是无限制;
2. perfetchCount : 会告诉rabbitmq不要同时给一个消费者推送多于N个消息,即一旦有N个消息还没有ack,则该consumer将block掉,直到有消息ack;
3. global : true / false 是否将上面设置应用于channel,简单点说,就是上面限制是channel级别的还是consumer级别;
**prefetchSize和global这两项,rabbit没有实现,暂且不研究.perfetchCount在no_ack=false的情况下生效,即在自动应答的情况下量两个值是不生效的;**
- 定义和特征
- 安装
- 基本概念
- 插件管理
- 核心概念
- virtual hosts
- connextion
- exchange
- channel
- queue
- binding
- 工作模式
- simple模式
- work模式
- 订阅模式
- routing模式
- topic模式
- QOS服务质量
- =====分割线=====
- RabbitMQ核心概念
- 初识RabbitMQ
- 什么是AMQP高级消息队列协议
- AMQP核心概念
- RabbitMQ整体架构模型
- 命令行与管控台操作
- RabbitMQ消息生产与消费
- RabbitMQ交换机详解
- 什么是exchange
- direct
- topic
- fanout
- headers
- RabbitMQ绑定,队列,虚拟主机,消息
- RabbitMQ高级特性
- 消息保障100%投递成功
- 幂等性概念及业界主流解决方案
- confirm确认消息
- return返回消息
- 自定义消费者
- 消费端限流策略
- 消费端ack与重回队列机制
- TTL消息
- 死信队列
- RabbitMQ集群架构
