kafka消费者客户端重要参数说明:
bootstrap.servers | kafka集群broker地址列表 |
key.deserializer | 消息中key对应的反序列化类 |
value.deserializer | 消息中value对应的反序列化类 |
group.id | 消费者所属消费者组的唯一标识 |
client.id | 消费者客户端ID |
heartbeat.interval.ms | 消费者到消费者协调器质检的预计时间。萧条用于确保消费者的会话保持状态,当有新的消费者加入或离开消费者组的时候方便再平衡,该值必须必session.timtout.ms 小,通常不高于1/3. |
session.timtoums | 消费者组协调器检测消费者是否失效的超时时间 |
max.poll.intercal.ms | 消费者拉取消息的最长空闲时间,如果超过这个时间消费者仍然没有发起poll操作,消费者会认为该消费者已经离开,会发起在平衡操作 |
auto.offset.reset | 消费者找不到消费位移时或者位移越界时,从什么位置读取消息,一般有latest (最新位置),earliest (最开始位置),none ,配置其余值会抛出异常 |
enable.auto.commit | 是否开启自动提交位移 |
auto.commit.interval.ms | 当enable.auto.commit=true 才生效,表示自动提交消费者位移的时间间隔 |
partition.assignment.strategy | 消费者分区分配策略 |
interceptor.class | 消费者客户端拦截器 |
fetch.min.bytes | 消费者客户端一次拉取请求(调用poll方法)能从kafka中拉取的最小数据量,默认值为 1B ,可以适当调大提高吞吐量,但是也会造成时延 |
fetch.max.bytes | 消费者客户端一次拉取请求(调用poll方法)能从kafka中拉取的最大数据量,默认值为 50MB。如果这个参数设置得比每条消息的大小都小的话,客户端是否无法正常消费?其实该参数设定的不是绝对的最大值,如果参数值小于每条消息大小,仍然能够获取消息。kafka中能接收的消息的最大大小是通过服务端参数message.max.bytes (对应于主题端参数max.message.bytes )设置 |
fetch.max.wait.ms | 与fetch.min.byhtes 有关,如果达不到最小数据量要求,kafka一直等待,这样显然是不合理的,因此通过fetch.max.wait.ms 来指定kafka的等待时间,默认为500ms,如果业务对时延敏感,可以适当调小这个参数 |
max.partition.fetch.bytes | 每个分区返回给消费者的最大数据量,默认为1MB,与fetch.max.bytes 类似,一个针对一次拉取的所有消息,一个针对一次拉取所有消息中的一个分区的消息大小,同理,如果该值小于每条消息大小,不会造成消息无法消费,kafka没有对此做强硬的设置 |
max.poll.records | 消费者一次拉取消息的最大消息数量,如果消息比较小,可以适当增大该值来提升消费速度 |
connection.max.idle.ms | 多久关闭空闲连接,默认为9分钟 |
exclude.internal.topics | 指定内部主题是否可以向消费者公开,kafka内部有两个内部主题_consumer_offsets 和_transaction_state 。如果设置为true,则只能使用subscribe(Collection) 方式,而不能使用subscribe(Pattern) 方式 |
recieve.buffer.bytes | 设置SO_RECBUF消息接收Socket缓冲区大小,默认为64KB,如果为-1,使用操作系统默认值 |
send.buffer.bytes | 设置SO_SENDBUF消息发送Socket缓冲区大小,默认为128KB,如果为-1,使用操作系统默认值 |
request.timeout.ms | 消费者等待请求响应的最长时间,默认为30s |
metadata.max.age.ms | 元数据过期时间,默认为5分钟 |
reconnect.backoff.ms | 尝试重新连接指定主机之前的等待时间,避免频繁连接主机,默认这为50ms |
retry.backoff.ms | 尝试重新发送失败的请求到指定分区之前的等待时间,避免在某些故障下频繁发送,默认为100ms |
isolation.level | 消费者的事务隔离级别 |