消費太慢
考慮增加Topic的分區數,並且同時提升消費組的消費者數量,消費者數=分區數。(兩者缺一不可)
消費太快
調整參數:
- fetch.max.bytes
- 單次獲取數據的最大消息數。
----------------------------------------------------------------
- max.poll.records <= 吞吐量
- 單次poll調用返回的最大消息數,如果處理邏輯很輕量,可以適當提高該值。
- 一次從kafka中poll出來的數據條數,max.poll.records條數據需要在在session.timeout.ms這個時間內處理完
- 默認值為500
----------------------------------------------------------------
- consumer.poll(1000) 重要參數
- 新版本的Consumer的Poll方法使用了類似於Select I/O機制,因此所有相關事件(包括reblance,消息獲取等)都發生在一個事件循環之中。
- 1000是一個超時時間,一旦拿到足夠多的數據(參數設置),consumer.poll(1000)會立即返回 ConsumerRecords<String, String> records。
- 如果沒有拿到足夠多的數據,會阻塞1000ms,但不會超過1000ms就會返回。