kafka-clients之ConsumerConfig

Kafka ConsumerConfig 中的配置项用于定义消费者的行为,如消费方式、偏移管理、组协调等。以下是ConsumerConfig中的关键配置项及其详细说明:

1. bootstrap.servers

  • 类型 :List<String>
  • 说明:Kafka集群的地址列表,消费者会从这些地址拉取数据,通常设置多个地址以防单个节点故障。

2. group.id

  • 类型 :String
  • 说明:消费者组的ID。属于同一个组的消费者会协同消费一个或多个分区内的消息,每个消息只会被一个组内的消费者读取。

3. enable.auto.commit

  • 类型 :Boolean
  • 默认值 :true
  • 说明 :是否自动提交偏移量。如果为true,则消费者会在每次轮询后自动提交当前的偏移量。

4. auto.commit.interval.ms

  • 类型 :Integer
  • 默认值:5000
  • 说明 :自动提交偏移量的时间间隔,单位为毫秒。仅在enable.auto.commit=true时生效。

5. auto.offset.reset

  • 类型 :String
  • 默认值 :latest
  • 说明 :消费者在无法找到其偏移量时的行为。可选值包括:
    • latest:从最新的数据开始消费(默认)。
    • earliest:从最早的数据开始消费。
    • none:如果没有偏移量,抛出异常。

6. fetch.min.bytes

  • 类型 :Integer
  • 默认值:1
  • 说明:消费者从服务器拉取数据时的最小字节数,只有达到这个值时,Kafka才会返回数据。提高此值可以减少请求频率,但会增加延迟。

7. fetch.max.wait.ms

  • 类型 :Integer
  • 默认值:500
  • 说明 :消费者等待数据的最大时间。如果没有足够的数据满足fetch.min.bytes,Kafka会等待这个时间后返回数据。

8. max.poll.records

  • 类型 :Integer
  • 默认值:500
  • 说明:单次轮询中可以拉取的最大消息数。调小此值可以减轻消费者的负担,但会增加拉取频率。

9. session.timeout.ms

  • 类型 :Integer
  • 默认值:10000
  • 说明:消费者与协调器保持连接的超时时间,如果消费者在该时间内未向协调器发送心跳,协调器会认为该消费者已离开并进行再平衡。

10. heartbeat.interval.ms

  • 类型 :Integer
  • 默认值:3000
  • 说明 :消费者发送心跳的频率。应小于session.timeout.ms,用于维持消费者的活跃状态。

11. max.poll.interval.ms

  • 类型 :Integer
  • 默认值:300000(5分钟)
  • 说明 :消费者两次调用poll方法之间的最大允许时间。如果超时,则消费者会被认为无响应并触发再平衡。

12. isolation.level

  • 类型 :String
  • 默认值 :read_uncommitted
  • 说明 :控制事务消费的隔离级别。可选值:
    • read_uncommitted:读取所有消息(包括未提交的事务消息)。
    • read_committed:只读取已提交的消息。

13. client.id

  • 类型 :String
  • 说明:客户端ID,用于在监控和日志中识别客户端。

14. receive.buffer.bytes / send.buffer.bytes

  • 类型 :Integer
  • 默认值:65536(64KB) / 131072(128KB)
  • 说明:TCP接收和发送缓冲区大小。适当调整这些值可以提高网络吞吐量。

15. max.partition.fetch.bytes

  • 类型 :Integer
  • 默认值:1048576(1MB)
  • 说明:消费者单次从每个分区拉取的最大数据量。这个值越大,单次拉取的数据就越多。

16. connections.max.idle.ms

  • 类型 :Long
  • 默认值:540000
  • 说明:客户端与服务器之间连接的最大空闲时间。超过该时间,Kafka会关闭空闲连接以释放资源。

17. request.timeout.ms

  • 类型 :Integer
  • 默认值:30000(30秒)
  • 说明:消费者请求的超时时间。在该时间内如果没有响应,则消费者会认为请求超时。

18. metrics.recording.level

  • 类型 :String
  • 默认值 :INFO
  • 说明 :控制消费者的度量记录级别。可选值为INFO(记录核心指标)和DEBUG(记录更多指标)。

19. metric.reporters

  • 类型 :List<String>
  • 说明:指定度量报告器类的列表,可以将消费者的度量数据导出到外部系统,例如Prometheus或自定义的监控系统。

20. check.crcs

  • 类型 :Boolean
  • 默认值 :true
  • 说明:是否验证消息的CRC(校验和)。开启后可以确保消息完整性,但会稍微增加性能开销。

21. interceptor.classes

  • 类型 :List<String>
  • 说明:拦截器类的列表,允许在消息被消费前或消费后进行拦截和处理,适合监控、改写消息等场景。

22. partition.assignment.strategy

  • 类型 :List<String>
  • 默认值 :RangeAssignor
  • 说明 :消费者组的分区分配策略。可选值包括:
    • RangeAssignor:按分区范围进行分配。
    • RoundRobinAssignor:轮询分配。
    • StickyAssignor:优先保持消费者分配的稳定性。
    • CooperativeStickyAssignor:部分分配,再平衡时减少中断。适合大数据量的分区。

23. fetch.max.bytes

  • 类型 :Integer
  • 默认值:52428800(50MB)
  • 说明:消费者单次拉取的最大数据量,用于控制批量处理的数据量上限。

24. reconnect.backoff.ms / reconnect.backoff.max.ms

  • 类型 :Long
  • 默认值:50 / 1000
  • 说明 :客户端连接失败后的重试时间间隔。backoff时间会随着重试次数指数增加,但不会超过reconnect.backoff.max.ms。
  • 规则:org.apache.kafka.common.utils.ExponentialBackoff

25. retry.backoff.ms

  • 类型 :Long
  • 默认值:100
  • 说明:请求失败后的重试间隔时间。客户端会在该时间后进行重试。

这些配置项可以帮助用户精细化控制Kafka消费者的行为,包括消费者组、消息拉取、分区分配、超时设置等。根据需求合理配置,可以优化消费者的性能和稳定性。

相关推荐
黄俊懿1 小时前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构
大菠萝爱上小西瓜3 小时前
基于 Spark + Iceberg 湖仓一体的 Netflix 流媒体用户行为全链路数仓与 ALS 智能推荐决策系统(含穿透下钻大屏)
大数据·分布式·spark
吴建旭 智宅焕4 小时前
智能家居售后服务体系的架构设计:分布式售后风险的集中式兜底方案
分布式·智能家居
lisanmengmeng14 小时前
Ganglia分布式集群监控系统安装手册
分布式
我不会起名字32220 小时前
Kafka 分区数到底设几个:吞吐量、顺序性与 rebalance 代价的取舍
kafka·消息队列·调优·分区
Smoothcloud润云20 小时前
GPU算力平台推荐:新手租GPU时,镜像环境和显存应该怎么选?
大数据·人工智能·pytorch·分布式·深度学习·gpu算力
程序员大阳1 天前
副队长大数据教程(6)--四节点分布式集群搭建
大数据·分布式·集群·搭建·四节点
马六六i1 天前
目前知名的分布式Ai数智共享商城哪家好
人工智能·分布式
大鹏说大话1 天前
分布式事务怎么选型?2PC、TCC、SAGA、本地消息表一次讲清
分布式
Eloudy1 天前
ASTRA-sim 3.0:通过高保真GPU和基础设施建模进行下一级分布式机器学习模拟
人工智能·分布式·机器学习