本文介紹用戶端參數的配置規則,請根據實際業務情境配置適當的值。
用戶端參數列表及說明如下所示:
| 參數 | 說明 |
| retries | 訊息發送失敗時的重試次數。 |
| retry.backoff.ms | 訊息發送失敗時的稍候再試,建議設定為1000。單位:毫秒。 |
| acks | 發送訊息的持久化機制。為了提升發送效能, 建議設定為acks=1。
|
| batch.size | 發往每個分區的訊息緩衝量。達到設定的數值時,就會觸發一次網路請求,然後Producer用戶端把訊息批量發往伺服器。如果batch.size設定過小,有可能影響發送效能和穩定性。建議保持預設值16384。單位:位元組。 |
| linger.ms | 每條訊息在緩衝中的最長時間。若超過這個時間,Producer用戶端就會忽略batch.size的限制,立即把訊息發往伺服器。建議根據業務情境, 將linger.ms設定在100~1000之間。單位:毫秒。 |
| partitioner.class | 設定分區策略。建議採用粘性分區策略,可提升發送效能。發送用戶端2.4及以上版本,預設採用粘性分區策略模式。 |
| buffer.memory | 發送的記憶體池大小。如果記憶體池設定過小,則有可能導致申請記憶體耗時過長,從而影響發送效能,甚至導致發送逾時。建議buffer.memory ≧ batch.size * 分區數 * 2。單位:位元組。 |
| 參數 | 說明 |
| fetch.min.bytes | 消費者從服務端擷取資料的最小位元組數。設定該參數時請盡量評估訊息發送端的訊息量,若設定過大可能會導致消費端延遲增大,過小可能會導致消費端頻繁拉取訊息。單位:位元組。 |
| fetch.max.wait.ms | 服務端等待的最大時間。單位:毫秒。
|
| max.partion.fetch.bytes | 每個分區返回的最大位元組數。單位:位元組。 |
| session.timeout.ms | 消費端發送心跳的時間間隔,如果在心跳時間間隔內沒有發送心跳,則服務端會認為消費者死亡,從而觸發Rebalance,Rebalance期間用戶端將會停止消費資料等待Rebalance完成。建議將此參數設定為30000~60000。單位:毫秒。 預設有效值:6000~300000。 |
| max.poll.records | 每次Poll擷取的最大訊息數量,若此值設定過大則需要儘快處理商務邏輯,避免處理過慢影響下一次Poll資料,從而導致在session.timeout.ms時間內沒有發送心跳引起Rebalance。建議該值小於 重要 在Java Client 0.10.1及其以上版本有單獨的線程發送心跳,小於此版本或者其他語言的用戶端都需考慮處理資料時間和發送心跳的間隔,防止頻繁Rebalance影響正常消費。 |
| max.poll.interval.ms | 最大的Poll間隔時間,僅在Java Client 0.10.1及其以上版本需配置該參數。如果在間隔時間內消費者沒有發送Poll請求,即使在session.timeout.ms參數設定的時間內發送了心跳。服務端也會認為消費者死亡,從而觸發Rebalance。因此需注意此值需要合理設定,建議該值大於<消費一條訊息花費的時間> * <Poll拉取的資料條數>的值。通常使用預設值即可。單位:毫秒。預設值:300000。 |
| enable.auto.commit | 是否採用自動認可位點機制。
預設值:true。 |
| auto.commit.interval.ms | 自動認可位點時間間隔。預設值為1000,單位:毫秒。 |
| auto.offset.reset | 消費位點重設策略。
說明
|