主要对Kafka 0.9之后的new consumer的参数进行解释:
session.timeout.ms
该参数是consumer group检测成员发生崩溃的时间,比如设置为3分钟,组中有一个consumer崩溃了,则group中的协调器可能需要3分钟才能感知到这个崩溃,重新进行分配分区。
max.poll.interval.ms
表示为consumer处理消息可能需要花费的时间,若超过设定值,那么协调器(coordinator)会认为该consumer已经跟不上其他consumer的消费进度或者说已经崩溃,将该consumer踢出group,重新进行rebalance
auto.offset.reset
表示了无位移信息或者位移越界时Kafka的应对策略。
主要有三个参数:
1、earliest:指定从最早位移开始消费,最早位移不一定为0,会从以保存位移点开始消费
2、latest: 从最新处位移开始消费
3、none:未发现位移信息或者位移越界,抛出异常
enable.auto.commit
表示是否consumer自动提交位移
fetch.max.bytes
表示consumer单词获取数据的最大字节数
max.poll.records
表示单词poll最大消息数,默认500
request.timeout.ms
表示消费者再重新发送请求或达到最大重试次数之前等待相应请求的最大时间
heartbeat.interval.ms
表示的consumer的心跳间隔时间,如何让group中的consumer快速感知开始新一轮rebalance,,会将REBALANCE_IN_PROGRESS异常的形式以consumer心跳请求的response当中
connection.max.idle.ms
kafka会定期关闭socket,导致下次consumer处理请求时需要重新创建于broker之间的socket链接,默认为9分钟,不在乎资源开销,可以设置为-1。
详细请见 https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html