## 消費端限流
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集群架構