預取值
更新時間 2023-07-03 21:29:56
最近更新時間: 2023-07-03 21:29:56
分享文章
介紹分布式消息服務RabbitMQ預取值功能
使用場景
所謂消息預取機制,它定義了在一個信道上,消費者允許的最大未確認的消息數量。
一旦未確認的消息數量達到了設置的預取值,RabbitMQ就停止傳遞更多消息,除非至少有一條未完成的消息得到了確認。
如何設置合適的預取值
通常,增加預取將提高向消費者傳遞消息的速度。雖然自動應答傳輸消息速率是最佳的,但是,在這種情況下已傳遞但尚未處理的消息的數量也會增加,從而增加了消費者的 RAM 消耗(隨機存取存儲器)應該小心使用具有無限預處理的自動確認模式或手動確認模式,消費者消費了大量的消息如果沒有確認的話,會導致消費者連接節點的內存消耗變大,所以找到合適的預取值是一個反復試驗的過程,不同的負載該值取值也不同 100 到 300 范圍內的值通常可提供最佳的吞吐量,并且不會給消費者帶來太大的風險。
預取值為 1 是最保守的。當然這將使吞吐量變得很低,特別是消費者連接延遲很嚴重的情況下,特別是在消費者連接等待時間較長的環境 中。對于大多數應用來說,稍微高一點的值將是最佳的。
設置預取值
設置預取值的java示例代碼如下
ConnectionFactory factory = new ConnectionFactory();
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.basicQos(20, false);