連線的ConnectionFactory配置完成後,接著就會配置 BasicQos
BasicQos 用於配置消息預取 (Prefetch) 的方法
可以限制消費者從隊列中一次獲取的消息數量,從而更好地管理消息的處理流量,防止消費者過載
PrefetchSize Message預取大小
限制一次傳過來的訊息「總大小」(用 bytes 表示)
客戶端中通常設置為 0(表示不限制大小)
PrefetchCount Message預取數量
每個消費者一次可以拿多少訊息
假如配置為 100 ,表示每個消費者最多只能一次拿到 100 個訊息
當它處理完某些訊息後(確認了處理完成),RabbitMQ 才會再送新的訊息給它
如何判斷要怎麼配置 PrefetchCount,可透過監測各自系統消化的時間進行調整
PrefetchCount = 處理能力(每秒消息數) x 處理時延(秒)
Global 全域設定
true:對整個連線生效,所有消費者共用同一個 PrefetchCount 限制
false:只針對當前消費者生效,PrefetchCount 限制為獨立配置
為什麼需要 BasicQos?
配置 BasicQos 的目的是平衡消息分發效率與消費者的處理能力,避免消息積壓或消費者資源耗盡的情況
低負載場景:可以適當增大 PrefetchCount,提升吞吐量
高負載場景:減小 PrefetchCount,確保每個消費者能穩定處理分配的消息
通過正確配置 BasicQos,能顯著提升系統的穩定性和性能,確保消息消費的高效運行