CommonClientConfigs
是kafka-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的认证机制,如
GSSAPI
、PLAIN
、SCRAM-SHA-256
、SCRAM-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文件密码,用于客户端验证服务器的身份。
这些配置项通常在需要细粒度控制客户端行为时进行调整。