Bootstrap

kafka-clients之CommonClientConfigs

CommonClientConfigskafka-clients库中一个包含Kafka通用配置项的类,它定义了Kafka Producer、Consumer、Admin等客户端共享的配置。以下是其中的主要配置项及其含义:

1. bootstrap.servers

  • 类型List<String>
  • 说明:Kafka集群的地址列表。可以是多个节点的地址,以逗号分隔,如localhost:9092,localhost:9093。客户端通过这些地址连接到Kafka集群。

2. client.id

  • 类型String
  • 说明:客户端ID,用于标识Kafka客户端的名称。Kafka会在日志和监控中记录该ID,帮助运维人员识别是哪个客户端在发送或消费消息。

3. connections.max.idle.ms

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

4. metadata.max.age.ms

  • 类型Long
  • 默认值:300000(5分钟)
  • 说明:客户端缓存元数据(比如分区信息)的最大时间。超过该时间后,客户端会向Kafka集群重新请求元数据。

5. metric.reporters

  • 类型List<String>
  • 说明:配置用于度量报告的类名列表。可以将自定义的度量报告器加入这里,将客户端的度量数据上报到外部系统。

6. metrics.num.samples

  • 类型Integer
  • 默认值:2
  • 说明:Kafka客户端的度量数据的采样数,用于计算度量指标的平均值。

7. metrics.recording.level

  • 类型String
  • 默认值INFO
  • 说明:控制Kafka客户端的度量记录级别。可选值有INFO(记录核心指标)和DEBUG(记录所有指标,数据量更大)。

8. metrics.sample.window.ms

  • 类型Long
  • 默认值:30000(30秒)
  • 说明:度量数据的时间窗口,用于计算统计数据。客户端会基于此时间窗口对度量数据进行统计分析。

9. receive.buffer.bytes

  • 类型Integer
  • 默认值:65536(64KB)
  • 说明:TCP接收缓冲区的大小。设置较大的缓冲区可以提高网络吞吐量,但会消耗更多内存资源。

10. reconnect.backoff.ms

  • 类型Long
  • 默认值:50
  • 说明:当连接失败时,Kafka客户端尝试重连的初始等待时间。每次连接失败后,等待时间会按指数增长。
  • 规则:org.apache.kafka.common.utils.ExponentialBackoff

11. reconnect.backoff.max.ms

  • 类型Long
  • 默认值:1000
  • 说明:客户端重试连接的最大等待时间。用于限制重连等待时间的增长上限,避免重连间隔过长。

12. request.timeout.ms

  • 类型Integer
  • 默认值:30000(30秒)
  • 说明:客户端请求的超时时间。超过该时间后,如果请求没有响应,客户端会抛出超时异常。

13. retry.backoff.ms

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

14. security.protocol

  • 类型String
  • 默认值PLAINTEXT
  • 说明:指定客户端与Kafka集群之间的安全协议。常用的协议有PLAINTEXT(无加密)、SSL(SSL加密)、SASL_PLAINTEXT(认证但不加密)和SASL_SSL(认证并加密)。

15. send.buffer.bytes

  • 类型Integer
  • 默认值:131072(128KB)
  • 说明:TCP发送缓冲区的大小。可以通过增大该值来提高发送的吞吐量。

16. socket.connection.setup.timeout.ms

  • 类型Long
  • 默认值:10000(10秒)
  • 说明:建立连接的超时时间,超过该时间后,连接将被关闭。适用于需要快速连接或资源有限的环境。

17. socket.connection.setup.timeout.max.ms

  • 类型Long
  • 默认值:30000(30秒)
  • 说明:建立连接的最大超时时间,超过此时间则连接失败。与 socket.connection.setup.timeout.ms 配合使用,限制连接的最长等待时间。

18. sasl.mechanism

  • 类型String
  • 默认值GSSAPI
  • 说明:设置SASL的认证机制,如GSSAPIPLAINSCRAM-SHA-256SCRAM-SHA-512等,配合security.protocol用于认证。

19. ssl.endpoint.identification.algorithm

  • 类型String
  • 默认值https
  • 说明:用于SSL连接的端点识别算法,确保客户端连接的是正确的服务器。设置为空字符串可禁用此验证。

20. ssl.key.password, ssl.keystore.location, ssl.keystore.password

  • 类型String
  • 说明:SSL认证所需的配置项,分别对应SSL私钥密码、Keystore文件位置和Keystore文件密码。

21. ssl.truststore.location, ssl.truststore.password

  • 类型String
  • 说明:SSL连接中信任库的配置项,分别对应Truststore文件位置和Truststore文件密码,用于客户端验证服务器的身份。

这些配置项通常在需要细粒度控制客户端行为时进行调整。

;