消费太慢
考虑增加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就会返回。