3. 配置
Kafka使用属性文件格式的 键值对进行配置。这些值可以从文件或以编程方式提供。
3.1 Broker 配置
基本配置如下:
broker.id
log.dirs
zookeeper.connect
下面 将更详细地讨论主题级配置和默认值。
advertised.listeners
发布到 ZooKeeper 供客户端使用的侦听器(如果与listeners
配置属性不同)。在 IaaS 环境中,这可能需要与代理绑定的接口不同。如果未设置,listeners
则将使用 的值。与 不同的是listeners
,通告 0.0.0.0 元地址是无效的。
与 不同的是listeners
,此属性中可以有重复的端口,以便可以将一个侦听器配置为通告另一个侦听器的地址。这在某些使用外部负载均衡器的情况下非常有用。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
auto.create.topics.enable
在服务器上启用自动创建主题
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
auto.leader.rebalance.enable
启用自动领导者平衡。后台线程定期检查分区领导者的分布,可通过“leader.imbalance.check.interval.seconds”进行配置。如果领导者不平衡超过“leader.imbalance.per.broker.percentage”,则会触发领导者重新平衡到分区的首选领导者。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
background.threads
用于各种后台处理任务的线程数
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
broker.id
该服务器的代理 ID。如果未设置,将生成唯一的代理 ID。为了避免 Zookeeper 生成的代理 ID 和用户配置的代理 ID 之间的冲突,生成的代理 ID 从served.broker.max.id + 1 开始。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
compression.type
指定给定主题的最终压缩类型。此配置接受标准压缩编解码器('gzip'、'snappy'、'lz4'、'zstd')。它还接受“未压缩”,这相当于不压缩;“生产者”表示保留生产者设置的原始压缩编解码器。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
control.plane.listener.name
用于控制器和代理之间通信的侦听器名称。Broker将使用control.plane.listener.name在侦听器列表中定位端点,以侦听来自控制器的连接。例如,如果代理的配置为:
listeners = INTERNAL://192.1.1.8:9092, EXTERNAL://10.1.1.5:9093, CONTROLLER://192.1.1.8:9094
listener.security.protocol.map = INTERNAL:PLAINTEXT, EXTERNAL:SSL, CONTROLLER:SSL
control.plane.listener.name = CONTROLLER
启动时,代理将开始使用安全协议“SSL”侦听“192.1.1.8:9094”。
在控制器端,当它通过zookeeper发现代理的已发布端点时,它将使用control.plane.listener.name来查找端点,它将用于建立与代理的连接。
例如,如果代理在 Zookeeper 上发布的端点为:
"endpoints" : ["INTERNAL://broker1.example.com:9092","EXTERNAL://broker1.example.com:9093","CONTROLLER://broker1.example.com:9094"]
并且控制器的配置是:
listener.security.protocol.map = INTERNAL:PLAINTEXT, EXTERNAL:SSL, CONTROLLER:SSL
control.plane.listener.name = CONTROLLER
那么控制器将使用“broker1.example.com:9094”,使用安全协议“SSL”连接到代理。
如果未显式配置,则默认值为 null,并且不会有用于控制器连接的专用端点。
如果显式配置,该值不能与 的值相同inter.broker.listener.name
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.listener.names
控制器使用的侦听器名称的逗号分隔列表。如果在 KRaft 模式下运行,这是必需的。当与控制器仲裁通信时,代理将始终使用此列表中的第一个侦听器。
注意:基于 ZK 的控制器不应设置此配置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.quorum.election.backoff.max.ms
开始新选举之前的最长时间(以毫秒为单位)。这用于二进制指数退避机制,有助于防止选举陷入僵局
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.quorum.election.timeout.ms
在触发新选举之前无法从领导者获取数据的最长时间(以毫秒为单位)
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.quorum.fetch.timeout.ms
在成为候选人并触发选民选举之前,从当前领导者那里成功获取信息的最长时间;在询问领导者是否有新纪元之前,没有收到来自大多数法定人数的提取的最长时间
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.quorum.voters
以逗号分隔的“{id}@{host}:{port}”条目列表中的一组投票者的 ID/端点信息映射。例如:`1@localhost:9092,2@localhost:9093,3@localhost:9094`
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
delete.topic.enable
启用删除主题。如果关闭此配置,通过管理工具删除主题将不起作用
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
early.start.listeners
以逗号分隔的侦听器名称列表,可以在授权者完成初始化之前启动。当授权者依赖于集群本身进行引导时,这非常有用,就像 StandardAuthorizer(将 ACL 存储在元数据日志中)的情况一样。默认情况下,controller.listener.names 中包含的所有侦听器也将是早期启动侦听器。如果侦听器接受外部流量,则不应出现在此列表中。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
leader.imbalance.check.interval.seconds
控制器触发分区重新平衡检查的频率
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
leader.imbalance.per.broker.percentage
每个broker允许的领导者不平衡比率。如果每个broker的余额超过此值,控制器将触发领导者余额。该值以百分比指定。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
listeners
侦听器列表 - 我们将侦听的 URI 的逗号分隔列表以及侦听器名称。如果监听器名称不是安全协议,listener.security.protocol.map
也必须设置。
侦听器名称和端口号必须是唯一的。
将主机名指定为 0.0.0.0 以绑定到所有接口。
将主机名留空以绑定到默认接口。
合法侦听器列表的示例:
PLAINTEXT://myhost:9092,SSL://:9091
CLIENT://0.0.0.0:9092,REPLICATION://localhost:9093
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.dirs
保存日志数据的目录(log.dirs 属性的补充)
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.dirs
存储日志数据的目录的逗号分隔列表。如果未设置,则使用 log.dir 中的值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.flush.interval.messages
在消息刷新到磁盘之前日志分区上累积的消息数
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.flush.interval.ms
任何主题中的消息在刷新到磁盘之前在内存中保留的最长时间(以毫秒为单位)。如果未设置,则使用 log.flush.scheduler.interval.ms 中的值
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.flush.offset.checkpoint.interval.ms
我们更新充当日志恢复点的最后一次刷新的持久记录的频率
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.flush.scheduler.interval.ms
日志刷新器检查是否有日志需要刷新到磁盘的频率(以毫秒为单位)
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.flush.start.offset.checkpoint.interval.ms
我们更新日志起始偏移量的持久记录的频率
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.retention.bytes
删除日志之前的最大大小
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.retention.hours
删除日志文件之前保留日志文件的小时数(以小时为单位),第三级为 log.retention.ms 属性
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.retention.minutes
删除日志文件之前保留日志文件的分钟数(以分钟为单位),次要于 log.retention.ms 属性。如果未设置,则使用 log.retention.hours 中的值
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.retention.ms
删除日志文件之前保留日志文件的毫秒数(以毫秒为单位),如果未设置,则使用 log.retention.minutes 中的值。如果设置为 -1,则不应用时间限制。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.roll.hours
推出新日志段之前的最长时间(以小时为单位),次要于 log.roll.ms 属性
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.roll.jitter.hours
从 logRollTimeMillis 中减去的最大抖动(以小时为单位),次要于 log.roll.jitter.ms 属性
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.roll.jitter.ms
从 logRollTimeMillis 中减去的最大抖动(以毫秒为单位)。如果未设置,则使用 log.roll.jitter.hours 中的值
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.roll.ms
推出新日志段之前的最长时间(以毫秒为单位)。如果未设置,则使用 log.roll.hours 中的值
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.segment.bytes
单个日志文件的最大大小
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.segment.delete.delay.ms
从文件系统中删除文件之前等待的时间
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
message.max.bytes
Kafka 允许的最大记录批量大小(如果启用压缩,则在压缩后)。如果增加此值并且存在早于 0.10.2 的消费者,则消费者的获取大小也必须增加,以便他们可以获取这么大的记录批次。在最新的消息格式版本中,为了提高效率,记录总是分组为批次。在以前的消息格式版本中,未压缩的记录不会分组为批次,并且此限制仅适用于这种情况下的单个记录。这可以使用主题级别配置针对每个主题进行设置max.message.bytes
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metadata.log.dir
此配置决定了我们将 KRaft 模式下集群的元数据日志放置在何处。如果未设置,元数据日志将放置在 log.dirs 中的第一个log.dirs中。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metadata.log.max.record.bytes. Between.snapshots
这是最新快照与生成新快照之前所需的高水位线之间的日志中的最大字节数。默认值为20971520。要根据经过的时间生成快照,请参见metadata.log.max.snapshot.interval.ms
配置。当达到最大时间间隔或达到最大字节数限制时,Kafka 节点将生成快照。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metadata.log.max.snapshot.interval.ms
如果日志中存在未包含在最新快照中的已提交记录,则这是等待生成快照的最大毫秒数。值为零将禁用基于时间的快照生成。默认值为3600000。如果要根据元数据字节数生成快照,请参见配置metadata.log.max.record.bytes.between.snapshots
。当达到最大时间间隔或达到最大字节数限制时,Kafka 节点将生成快照。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metadata.log.segment.bytes
单个元数据日志文件的最大大小。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metadata.log.segment.ms
推出新元数据日志文件之前的最长时间(以毫秒为单位)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metadata.max.retention.bytes
删除旧快照和日志文件之前元数据日志和快照的最大组合大小。由于在删除任何日志之前必须至少存在一个快照,因此这是一项软限制。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metadata.max.retention.ms
删除元数据日志文件或快照之前保留的毫秒数。由于在删除任何日志之前必须至少存在一个快照,因此这是一项软限制。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
min.insync.replicas
当生产者将 acks 设置为“all”(或“-1”)时,min.insync.replicas 指定必须确认写入才能被视为成功的最小副本数。如果无法满足此最小值,则生产者将引发异常(NotEnoughReplicas 或 NotEnoughReplicasAfterAppend)。
当一起使用时,min.insync.replicas 和 ack 允许您强制执行更高的持久性保证。典型的场景是创建一个复制因子为 3 的主题,将 min.insync.replicas 设置为 2,并使用“all”的 ack 进行生成。这将确保生产者在大多数副本未收到写入时引发异常。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
node.id
当“process.roles”非空时,与该进程所扮演的角色关联的节点 ID。这是在 KRaft 模式下运行时所需的配置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
num.io.threads
服务器用于处理请求的线程数,其中可能包括磁盘 I/O
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
num.network.threads
服务器用于从网络接收请求并向网络发送响应的线程数。注意:每个监听器(除了控制器监听器)都会创建自己的线程池。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
num.recovery.threads.per.data.dir
每个数据目录用于启动时日志恢复和关闭时刷新的线程数
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
num.replica.alter.log.dirs.threads
可以在log.dirs之间移动副本的线程数,其中可能包括磁盘 I/O
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
num.replica.fetchers
用于从每个源代理复制记录的获取器线程数。每个 Broker 上的 fetcher 总数num.replica.fetchers
与集群中的 Broker 数量相乘。增加此值可以提高跟随者和领导者 Broker 中的 I/O 并行度,但代价是更高的 CPU 和内存利用率。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
offsets.metadata.max.bytes
与偏移提交关联的元数据条目的最大大小
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
offsets.commit.required.acks
可以接受提交之前所需的确认。一般来说,不应覆盖默认值(-1)
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
offsets.commit.timeout.ms
偏移量提交将被延迟,直到偏移量主题的所有副本都收到提交或达到此超时。这类似于生产者请求超时。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
offsets.load.buffer.size
将偏移量加载到缓存中时从偏移量段读取的批量大小(软限制,如果记录太大则覆盖)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
offsets.retention.check.interval.ms
检查过时偏移量的频率
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
offsets.retention.minutes
对于订阅的消费者,在以下情况下,特定分区的已提交偏移量将过期并被丢弃: 1)在消费者组失去所有消费者(即变空)后,此保留期已过; 2) 自上次为该分区提交偏移量以来,该保留期已过,并且该组不再订阅相应的主题。 对于独立消费者(使用手动分配),自上次提交以来的保留期过后,偏移量将过期。 请注意,当通过delete-group请求删除一个组时,其提交的偏移量也将被删除,而无需额外的保留期; 此外,当通过删除主题请求删除主题时,在传播元数据更新时,该主题的任何组的提交偏移量也将被删除,而无需额外的保留期。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
offsets.topic.compression.codec
偏移量主题的压缩编解码器 - 压缩可用于实现“原子”提交
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
offsets.topic.num.partitions
偏移提交主题的分区数量(部署后不应更改)
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
offsets.topic.replication.factor
偏移主题的复制因子(设置较高以确保可用性)。在集群大小满足此复制因子要求之前,内部主题创建将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
offsets.topic.segment.bytes
偏移量主题段字节应保持相对较小,以便于更快的日志压缩和缓存加载
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
process.roles
此流程扮演的角色:“broker”、“控制者”或“broker、控制者”(如果两者兼而有之)。此配置仅适用于KRaft(Kafka Raft)模式的集群(而不是ZooKeeper)。对于 Zookeeper 集群,将此配置保留为未定义或为空。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
queued.max.requests
在阻塞网络线程之前,数据平面允许的排队请求数
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replica.fetch.min.bytes
每个获取响应所需的最小字节数。如果没有足够的字节,请等待replica.fetch.wait.max.ms
(代理配置)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replica.fetch.wait.max.ms
跟随者副本发出的每个 fetcher 请求的最大等待时间。该值应始终小于replica.lag.time.max.ms,以防止低吞吐量主题的ISR频繁收缩
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replica.high.watermark.checkpoint.interval.ms
将高水位线保存到磁盘的频率
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replica.lag.time.max.ms
如果追随者没有发送任何获取请求或者至少在这一次没有消耗到领导者日志结束偏移量,则领导者将从 isr 中删除追随者
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replica.socket.receive.buffer.bytes
用于向领导者复制数据的网络请求的套接字接收缓冲区
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replica.socket.timeout.ms
网络请求的套接字超时。它的值至少应该是replica.fetch.wait.max.ms
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
request.timeout.ms
该配置控制客户端等待请求响应的最长时间。如果在超时之前未收到响应,则客户端将在必要时重新发送请求,或者在重试次数耗尽时使请求失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.mechanism.controller.protocol
sasl.mechanism用于与控制器通信。默认为 GSSAPI。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
socket.receive.buffer.bytes
套接字服务器套接字的 SO_RCVBUF 缓冲区。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
socket.request.max.bytes
一次socket请求的最大字节数
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
socket.send.buffer.bytes
The SO_SNDBUF buffer of the socket server sockets. If the value is -1, the OS default will be used.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
transaction.max.timeout.ms
The maximum allowed timeout for transactions. If a client’s requested transaction time exceed this, then the broker will return an error in InitProducerIdRequest. This prevents a client from too large of a timeout, which can stall consumers reading from topics included in the transaction.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
transaction.state.log.load.buffer.size
Batch size for reading from the transaction log segments when loading producer ids and transactions into the cache (soft-limit, overridden if records are too large).
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
transaction.state.log.min.isr
Overridden min.insync.replicas config for the transaction topic.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
transaction.state.log.num.partitions
事务主题的分区数量(部署后不应更改)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
transaction.state.log.replication.factor
事务主题的复制因子(设置较高以确保可用性)。在集群大小满足此复制因子要求之前,内部主题创建将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
transaction.state.log.segment.bytes
事务主题段字节应保持相对较小,以便于更快的日志压缩和缓存加载
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
transactional.id.expiration.ms
在事务 ID 过期之前,事务协调器在未收到当前事务的任何事务状态更新的情况下将等待的时间(以毫秒为单位)。当交易仍在进行时,交易 ID 不会过期。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
unclean.leader.election.enable
指示是否将不在 ISR 集中的副本作为最后手段选举为领导者,即使这样做可能会导致数据丢失
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.connect
以以下形式指定 ZooKeeper 连接字符串,hostname:port
其中 host 和 port 是 ZooKeeper 服务器的主机和端口。要允许在 ZooKeeper 机器关闭时通过其他 ZooKeeper 节点进行连接,您还可以在表单中指定多个主机hostname1:port1,hostname2:port2,hostname3:port3
。
服务器还可以将 ZooKeeper chroot 路径作为其 ZooKeeper 连接字符串的一部分,该连接字符串将其数据放置在全局 ZooKeeper 命名空间中的某个路径下。例如,要给出 chroot 路径,/chroot/path
请将连接字符串给出为hostname1:port1,hostname2:port2,hostname3:port3/chroot/path
.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.connection.timeout.ms
客户端等待与zookeeper建立连接的最长时间。如果未设置,则使用zookeeper.session.timeout.ms中的值
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.max.in.flight.requests
客户端在阻塞之前向 Zookeeper 发送的未确认请求的最大数量。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.metadata.migration.enable
启用 ZK 到 KRaft 迁移
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.session.timeout.ms
Zookeeper 会话超时
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.set.acl
设置客户端使用安全 ACL
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
broker.heartbeat.interval.ms
代理心跳之间的时间长度(以毫秒为单位)。在 KRaft 模式下运行时使用。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
broker.id.generation.enable
在服务器上启用自动代理 ID 生成。启用后,应检查为served.broker.max.id配置的值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
broker.rack
broker的机架。这将用于机架感知复制分配以实现容错。示例:“RACK1”、“us-east-1d”
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
broker.session.timeout.ms
The length of time in milliseconds that a broker lease lasts if no heartbeats are made. Used when running in KRaft mode.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
connections.max.idle.ms
Idle connections timeout: the server socket processor threads close the connections that idle more than this
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
connections.max.reauth.ms
When explicitly set to a positive number (the default is 0, not a positive number), a session lifetime that will not exceed the configured value will be communicated to v2.2.0 or later clients when they authenticate. The broker will disconnect any such connection that is not re-authenticated within the session lifetime and that is then subsequently used for any purpose other than re-authentication. Configuration names can optionally be prefixed with listener prefix and SASL mechanism name in lower-case. For example, listener.name.sasl_ssl.oauthbearer.connections.max.reauth.ms=3600000
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controlled.shutdown.enable
Enable controlled shutdown of the server
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controlled.shutdown.max.retries
Controlled shutdown can fail for multiple reasons. This determines the number of retries when such failure happens
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controlled.shutdown.retry.backoff.ms
Before each retry, the system needs time to recover from the state that caused the previous failure (Controller fail over, replica lag etc). This config determines the amount of time to wait before retrying.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.quorum.append.linger.ms
The duration in milliseconds that the leader will wait for writes to accumulate before flushing them to disk.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.quorum.request.timeout.ms
该配置控制客户端等待请求响应的最长时间。如果在超时之前未收到响应,则客户端将在必要时重新发送请求,或者在重试次数耗尽时使请求失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.socket.timeout.ms
控制器到代理通道的套接字超时
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
default.replication.factor
自动创建主题的默认复制因子
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
delegate.token.expiry.time.ms
令牌需要更新之前的令牌有效时间(以毫秒为单位)。默认值 1 天。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
delegation.token.master.key
已弃用:delegation.token.secret.key 的别名,应使用它来代替此配置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
delegation.token.max.lifetime.ms
令牌具有最长生命周期,超过该生命周期就无法再续订。默认值 7 天。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
delegation.token.secret.key
用于生成和验证委托令牌的密钥。必须在所有代理之间配置相同的密钥。如果密钥未设置或设置为空字符串,代理将禁用委托令牌支持。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
delete.records.purgatory.purge.interval.requests
删除记录请求purgatory的清除间隔(以请求数为单位)
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
fetch.max.bytes
我们将为获取请求返回的最大字节数。必须至少为 1024。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
fetch.purgatory.purge.interval.requests
获取请求炼狱的清除间隔(以请求数为单位)
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
group.initial.rebalance.delay.ms
组协调员在执行第一次重新平衡之前等待更多消费者加入新组的时间。较长的延迟意味着可能会减少重新平衡,但会增加处理开始之前的时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
group.max.session.timeout.ms
注册消费者允许的最大会话超时。较长的超时使消费者有更多的时间在心跳之间处理消息,但代价是检测故障的时间更长。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
group.max.size
单个消费组可以容纳的最大消费者数量。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
group.min.session.timeout.ms
注册消费者允许的最短会话超时。更短的超时会导致更快的故障检测,但代价是更频繁的消费者心跳,这可能会压垮代理资源。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
initial.broker.registration.timeout.ms
最初向控制器仲裁注册时,在声明失败并退出代理进程之前等待的毫秒数。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
inter.broker.listener.name
用于代理之间通信的侦听器名称。如果未设置,则侦听器名称由 security.inter.broker.protocol 定义。同时设置此属性和 security.inter.broker.protocol 属性是错误的。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
inter.broker.protocol.version
指定将使用哪个版本的代理间协议。
在所有代理升级到新版本后,这通常会受到影响。
一些有效值的示例为: 0.8.0、0.8.1、0.8.1.1、0.8.2、0.8.2.0、0.8.2.1、0.9.0.0、0.9.0.1 检查 MetadataVersion 以获取完整列表。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.backoff.ms
The amount of time to sleep when there are no logs to clean
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.dedupe.buffer.size
The total memory used for log deduplication across all cleaner threads
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.delete.retention.ms
The amount of time to retain delete tombstone markers for log compacted topics. This setting also gives a bound on the time in which a consumer must complete a read if they begin from offset 0 to ensure that they get a valid snapshot of the final stage (otherwise delete tombstones may be collected before they complete their scan).
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.enable
Enable the log cleaner process to run on the server. Should be enabled if using any topics with a cleanup.policy=compact including the internal offsets topic. If disabled those topics will not be compacted and continually grow in size.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.io.buffer.load.factor
Log cleaner dedupe buffer load factor. The percentage full the dedupe buffer can become. A higher value will allow more log to be cleaned at once but will lead to more hash collisions
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.io.buffer.size
The total memory used for log cleaner I/O buffers across all cleaner threads
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.io.max.bytes.per.second
The log cleaner will be throttled so that the sum of its read and write i/o will be less than this value on average
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.max.compaction.lag.ms
The maximum time a message will remain ineligible for compaction in the log. Only applicable for logs that are being compacted.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.min.cleanable.ratio
The minimum ratio of dirty log to total log for a log to eligible for cleaning. If the log.cleaner.max.compaction.lag.ms or the log.cleaner.min.compaction.lag.ms configurations are also specified, then the log compactor considers the log eligible for compaction as soon as either: (i) the dirty ratio threshold has been met and the log has had dirty (uncompacted) records for at least the log.cleaner.min.compaction.lag.ms duration, or (ii) if the log has had dirty (uncompacted) records for at most the log.cleaner.max.compaction.lag.ms period.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.min.compaction.lag.ms
消息在日志中保持未压缩状态的最短时间。仅适用于正在压缩的日志。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleaner.threads
用于日志清理的后台线程数
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.cleanup.policy
超出保留窗口的段的默认清理策略。以逗号分隔的有效策略列表。有效的策略是:“删除”和“紧凑”
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.index.interval.bytes
我们向偏移索引添加条目的时间间隔
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.index.size.max.bytes
偏移索引的最大大小(以字节为单位)
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.message.format.version
指定代理将用于将消息附加到日志的消息格式版本。该值应该是有效的 MetadataVersion。一些示例是:0.8.2、0.9.0.0、0.10.0,请检查 MetadataVersion 了解更多详细信息。通过设置特定的消息格式版本,用户可以证明磁盘上的所有现有消息都小于或等于指定的版本。错误地设置此值将导致使用旧版本的消费者崩溃,因为他们将收到他们不理解的格式的消息。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.message.timestamp.difference.max.ms
代理收到消息时的时间戳与消息中指定的时间戳之间允许的最大差异。如果 log.message.timestamp.type=CreateTime,则如果时间戳差异超过此阈值,消息将被拒绝。如果log.message.timestamp.type=LogAppendTime,则忽略此配置。允许的最大时间戳差异应不大于log.retention.ms,以避免不必要的频繁日志滚动。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.message.timestamp.type
定义消息中的时间戳是消息创建时间还是日志追加时间。该值应该是“CreateTime”或“LogAppendTime”
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.preallocate
创建新段时是否应该预先分配文件?如果您在 Windows 上使用 Kafka,则可能需要将其设置为 true。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.retention.check.interval.ms
日志清理器检查是否有日志符合删除条件的频率(以毫秒为单位)
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
max.connection.creation.rate
我们在任何时候允许代理的最大连接创建速率。侦听器级别限制还可以通过在配置名称前添加侦听器前缀来配置,例如,listener.name.internal.max.connection.creation.rate
应根据代理容量配置代理范围的连接速率限制,而应根据应用程序要求配置侦听器限制。如果达到侦听器或代理限制(代理间侦听器除外),新连接将受到限制。仅当达到侦听器级别的速率限制时,才会限制代理间侦听器上的连接。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
max.connections
我们在任何时候允许代理的最大连接数。除了使用 max.connections.per.ip 配置的任何每 ip 限制之外,还应用此限制。侦听器级别限制也可以通过在配置名称前添加侦听器前缀来配置,例如listener.name.internal.max.connections
. 代理范围的限制应根据代理容量进行配置,而侦听器限制应根据应用程序要求进行配置。如果达到侦听器或代理限制,则新连接将被阻止。即使达到代理范围的限制,也允许代理间侦听器上的连接。在这种情况下,另一个侦听器上最近最少使用的连接将被关闭。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
max.connections.per.ip
我们允许来自每个 IP 地址的最大连接数。如果使用 max.connections.per.ip.overrides 属性配置了覆盖,则可以将其设置为 0。如果达到限制,来自该 IP 地址的新连接将被丢弃。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
max.connections.per.ip.overrides
每个 IP 或主机名的逗号分隔列表将覆盖默认的最大连接数。示例值为“hostName:100,127.0.0.1:200”
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
max.incremental.fetch.session.cache.slots
我们将维护的增量获取会话的最大数量。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
num.partitions
每个主题的默认日志分区数
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
password.encoder.old.secret
用于对动态配置的密码进行编码的旧秘密。仅当更新机密时才需要这样做。如果指定,所有动态编码的密码都将使用此旧密钥进行解码,并在代理启动时使用password.encoder.secret 重新编码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
password.encoder.secret
用于编码该代理的动态配置密码的秘密。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
principal.builder.class
实现 KafkaPrincipalBuilder 接口的类的完全限定名称,用于构建授权期间使用的 KafkaPrincipal 对象。如果未定义主体构建器,则默认行为取决于所使用的安全协议。ssl.principal.mapping.rules
对于 SSL 身份验证,将使用应用于客户端证书中的可分辨名称(如果提供了)定义的规则派生主体;否则,如果不需要客户端身份验证,则主体名称将为 ANONYMOUS。sasl.kerberos.principal.to.local.rules
对于 SASL 身份验证,如果使用 GSSAPI,将使用定义的规则派生主体,对于其他机制则使用 SASL 身份验证 ID。对于明文,主体将是匿名的。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
producer.purgatory.purge.interval.requests
生产者请求炼狱的清除间隔(以请求数为单位)
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
queued.max.request.bytes
在不再读取请求之前允许的排队字节数
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replica.fetch.backoff.ms
发生获取分区错误时休眠的时间量。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replica.fetch.max.bytes
尝试为每个分区获取的消息字节数。这不是绝对最大值,如果提取的第一个非空分区中的第一个记录批次大于此值,仍然会返回该记录批次以确保可以取得进展。代理接受的最大记录批量大小是通过message.max.bytes
(代理配置)或max.message.bytes
(主题配置)定义的。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replica.fetch.response.max.bytes
Maximum bytes expected for the entire fetch response. Records are fetched in batches, and if the first record batch in the first non-empty partition of the fetch is larger than this value, the record batch will still be returned to ensure that progress can be made. As such, this is not an absolute maximum. The maximum record batch size accepted by the broker is defined via message.max.bytes
(broker config) or max.message.bytes
(topic config).
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replica.selector.class
The fully qualified class name that implements ReplicaSelector. This is used by the broker to find the preferred read replica. By default, we use an implementation that returns the leader.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
reserved.broker.max.id
Max number that can be used for a broker.id
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.client.callback.handler.class
The fully qualified name of a SASL client callback handler class that implements the AuthenticateCallbackHandler interface.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.enabled.mechanisms
The list of SASL mechanisms enabled in the Kafka server. The list may contain any mechanism for which a security provider is available. Only GSSAPI is enabled by default.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.jaas.config
SASL 连接的 JAAS 登录上下文参数采用 JAAS 配置文件使用的格式。JAAS 配置文件格式描述如下。该值的格式为:loginModuleClass controlFlag (optionName=optionValue)*;
。对于代理,配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,需要listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule;
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.kerberos.kinit.cmd
Kerberos kinit 命令路径。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.kerberos.min.time.before.relogin
刷新尝试之间的登录线程睡眠时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.kerberos.principal.to.local.rules
用于从主体名称映射到短名称(通常是操作系统用户名)的规则列表。规则按顺序进行评估,并且与主体名称匹配的第一条规则用于将其映射到短名称。列表中的任何后续规则都将被忽略。默认情况下,表单的主体名称{username}/{hostname}@{REALM}
映射到{username}
. 有关格式的更多详细信息,请参阅安全授权和 acls。KafkaPrincipalBuilder
请注意,如果配置提供了 的扩展,则该配置将被忽略principal.builder.class
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.kerberos.service.name
Kafka 运行时使用的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 的配置中定义。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.kerberos.ticket.renew.jitter
添加到更新时间的随机抖动的百分比。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.kerberos.ticket.renew.window.factor
登录线程将休眠,直到达到从上次刷新到票证到期的指定时间窗口因子,此时它将尝试更新票证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.login.callback.handler.class
实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理程序类的完全限定名称。对于代理,登录回调处理程序配置必须以侦听器前缀和小写的 SASL 机制名称为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.login.class
实现 Login 接口的类的完全限定名称。 对于代理,登录配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。 例如: listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.login.refresh.buffer.seconds
刷新凭证时在凭证过期前维持的缓冲时间量(以秒为单位)。 如果刷新发生的时间比缓冲秒数更接近到期,则刷新将向上移动以维持尽可能多的缓冲时间。 合法值介于 0 到 3600(1 小时)之间; 如果未指定值,则使用默认值 300(5 分钟)。 如果该值和 sasl.login.refresh.min.period.seconds 的总和超过凭证的剩余生命周期,则它们都会被忽略。 目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.login.refresh.min.period.seconds
登录刷新线程在刷新凭据之前等待的所需最短时间(以秒为单位)。 合法值介于 0 到 900(15 分钟)之间; 如果未指定值,则使用默认值 60(1 分钟)。 如果该值和 sasl.login.refresh.buffer.seconds 的总和超过凭证的剩余生命周期,则它们都会被忽略。 目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.login.refresh.window.factor
登录刷新线程将休眠,直到达到相对于凭证生命周期的指定窗口因子,此时它将尝试刷新凭证。 合法值介于 0.5 (50%) 和 1.0 (100%)(含)之间; 如果未指定值,则使用默认值 0.8 (80%)。 目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.login.refresh.window.jitter
相对于添加到登录刷新线程睡眠时间的凭证生命周期的最大随机抖动量。 合法值介于 0 和 0.25 (25%) 之间(含); 如果未指定值,则使用默认值 0.05 (5%)。 目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.mechanism.inter.broker.protocol
SASL 机制用于代理间通信。 默认为 GSSAPI。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.oauthbearer.jwks.endpoint.url
可以从中检索提供商的 JWKS(JSON Web 密钥集) 的 OAuth/OIDC 提供商 URL。 URL 可以基于 HTTP(S) 或基于文件。 如果 URL 基于 HTTP(S),则将通过代理启动时配置的 URL 从 OAuth/OIDC 提供程序检索 JWKS 数据。 所有当时的密钥都将缓存在代理上以用于传入请求。 如果收到 JWT 的身份验证请求,其中包含尚未在缓存中的“kid”标头声明值,则将根据需要再次查询 JWKS 端点。 但是,代理会每隔 sasl.oauthbearer.jwks.endpoint.refresh.ms 毫秒轮询一次 URL,以便在收到包含这些密钥的任何 JWT 请求之前使用任何即将到来的密钥刷新缓存。 如果 URL 是基于文件的,代理将在启动时从配置的位置加载 JWKS 文件。 如果 JWT 包含 JWKS 文件中不存在的“kid”标头值,代理将拒绝 JWT 并且身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.oauthbearer.token.endpoint.url
OAuth/OIDC 身份提供商的 URL。 如果 URL 基于 HTTP(S),则它是颁发者的令牌端点 URL,将根据 sasl.jaas.config 中的配置发出登录请求。 如果 URL 是基于文件的,则它指定一个包含 OAuth/OIDC 身份提供商颁发的访问令牌(JWT 序列化形式)的文件,用于授权。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.server.callback.handler.class
实现 AuthenticateCallbackHandler 接口的 SASL 服务器回调处理程序类的完全限定名称。 服务器回调处理程序必须以侦听器前缀和小写 SASL 机制名称作为前缀。 例如: listener.name.sasl_ssl.plain.sasl.server.callback.handler.class=com.example.CustomPlainCallbackHandler.
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.server.max.receive.size
初始 SASL 身份验证之前和期间允许的最大接收大小。默认接收大小为 512KB。GSSAPI 将请求限制为 64K,但对于自定义 SASL 机制,默认情况下我们允许最多 512KB。实际上,PLAIN、SCRAM 和 OAUTH 机制可以使用更小的限制。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
security.inter.broker.protocol
用于broker之间通信的安全协议。有效值为:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL。同时设置 this 和 inter.broker.listener.name 属性是错误的。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
socket.connection.setup.timeout.max.ms
客户端等待建立套接字连接的最长时间。对于每个连续的连接失败,连接设置超时将呈指数增长,直至达到此最大值。为了避免连接风暴,将对超时应用 0.2 的随机化因子,从而产生比计算值低 20% 到高 20% 之间的随机范围。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
socket.connection.setup.timeout.ms
客户端等待建立套接字连接的时间。如果在超时之前未建立连接,客户端将关闭套接字通道。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
socket.listen.backlog.size
套接字上挂起的连接的最大数量。 在Linux中,您可能还需要相应配置somaxconn
和tcp_max_syn_backlog
内核参数才能使配置生效。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.cipher.suites
密码套件列表。 这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。 默认情况下,支持所有可用的密码套件。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.client.auth
配置 kafka 代理来请求客户端身份验证。 以下设置是常见的:
ssl.client.auth=required
如果设置为必需,则需要客户端身份验证。ssl.client.auth=requested
这意味着客户端身份验证是可选的。 与必需的不同,如果设置了此选项,客户端可以选择不提供有关其自身的身份验证信息ssl.client.auth=none
这意味着不需要客户端身份验证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.enabled.protocols
为 SSL 连接启用的协议列表。 使用 Java 11 或更高版本运行时,默认值为“TLSv1.2、TLSv1.3”,否则为“TLSv1.2”。 使用 Java 11 的默认值,如果客户端和服务器都支持 TLSv1.3,则首选 TLSv1.3,否则回退到 TLSv1.2(假设两者至少支持 TLSv1.2)。 对于大多数情况,此默认值应该没问题。 另请参阅 ssl.protocol
的配置文档。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.key.password
密钥存储文件中私钥的密码或“ssl.keystore.key”中指定的 PEM 密钥的密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.keymanager.algorithm
密钥管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的密钥管理器工厂算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.keystore.certificate.chain
证书链采用“ssl.keystore.type”指定的格式。默认 SSL 引擎工厂仅支持带有 X.509 证书列表的 PEM 格式
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.keystore.key
私钥采用“ssl.keystore.type”指定的格式。默认 SSL 引擎工厂仅支持带有 PKCS#8 密钥的 PEM 格式。如果密钥已加密,则必须使用“ssl.key.password”指定密钥密码
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.keystore.location
密钥存储文件的位置。这对客户端来说是可选的,可用于客户端的双向身份验证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.keystore.password
密钥存储文件的存储密码。这对于客户端来说是可选的,并且仅在配置了“ssl.keystore.location”时才需要。PEM 格式不支持密钥存储密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.keystore.type
密钥存储文件的文件格式。这对于客户来说是可选的。默认 `ssl.engine.factory.class` 当前支持的值为 [JKS、PKCS12、PEM]。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.protocol
用于生成 SSLContext 的 SSL 协议。 使用 Java 11 或更高版本运行时,默认值为“TLSv1.3”,否则为“TLSv1.2”。 该值对于大多数用例来说应该没问题。 最新 JVM 中允许的值为“TLSv1.2”和“TLSv1.3”。 较旧的 JVM 可能支持“TLS”、“TLSv1.1”、“SSL”、“SSLv2”和“SSLv3”,但由于已知的安全漏洞,不鼓励使用它们。 使用此配置和“ssl.enabled.protocols”的默认值,如果服务器不支持“TLSv1.3”,客户端将降级到“TLSv1.2”。 如果此配置设置为“TLSv1.2”,客户端将不会使用“TLSv1.3”,即使它是 ssl.enabled.protocols 中的值之一,并且服务器仅支持“TLSv1.3”。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.provider
用于 SSL 连接的安全提供程序的名称。 默认值是 JVM 的默认安全提供程序。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.trustmanager.algorithm
信任管理器工厂用于 SSL 连接的算法。 默认值是为 Java 虚拟机配置的信任管理器工厂算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.truststore.certificates
采用ssl.truststore.type
指定格式的受信任证书。 默认 SSL 引擎工厂仅支持带有 X.509 证书的 PEM 格式。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.truststore.location
信任存储文件的位置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.truststore.password
信任存储文件的密码。 如果未设置密码,仍将使用配置的信任存储文件,但禁用完整性检查。 PEM 格式不支持信任存储密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.truststore.type
信任存储文件的文件格式。 默认 ssl.engine.factory.class
当前支持的值为 [JKS, PKCS12, PEM].
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.clientCnxnSocket
使用 TLS 连接到 ZooKeeper 时,通常设置为 org.apache.zookeeper.ClientCnxnSocketNetty
。 覆盖通过同名 zookeeper.clientCnxnSocket
系统属性设置的任何显式值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.client.enable
设置客户端在连接到 ZooKeeper 时使用 TLS。显式值会覆盖通过zookeeper.client.secure
系统属性设置的任何值(请注意不同的名称)。如果两者均未设置,则默认为 false;如果为 true,zookeeper.clientCnxnSocket
则必须设置(通常设置为org.apache.zookeeper.ClientCnxnSocketNetty
);要设置的其他值可能包括zookeeper.ssl.cipher.suites
, zookeeper.ssl.crl.enable
, zookeeper.ssl.enabled.protocols
, zookeeper.ssl.endpoint.identification.algorithm
, zookeeper.ssl.keystore.location
, zookeeper.ssl.keystore.password
, zookeeper.ssl.keystore.type
, zookeeper.ssl.ocsp.enable
, zookeeper.ssl.protocol
, zookeeper.ssl.truststore.location
, zookeeper.ssl.truststore.password
,zookeeper.ssl.truststore.type
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.keystore.location
使用通过 TLS 连接到 ZooKeeper 的客户端证书时的密钥库位置。覆盖通过zookeeper.ssl.keyStore.location
系统属性设置的任何显式值(注意驼峰命名法)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.keystore.password
使用通过 TLS 连接到 ZooKeeper 的客户端证书时的密钥库密码。覆盖通过zookeeper.ssl.keyStore.password
系统属性设置的任何显式值(注意驼峰命名法)。请注意,ZooKeeper 不支持与 keystore 密码不同的密钥密码,因此请务必将 keystore 中的密钥密码设置为与 keystore 密码相同;否则与 Zookeeper 的连接尝试将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.keystore.type
使用通过 TLS 连接到 ZooKeeper 的客户端证书时的密钥库类型。覆盖通过zookeeper.ssl.keyStore.type
系统属性设置的任何显式值(注意驼峰命名法)。默认值null
表示将根据密钥库的文件扩展名自动检测类型。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.truststore.location
使用 TLS 连接到 ZooKeeper 时的信任库位置。覆盖通过zookeeper.ssl.trustStore.location
系统属性设置的任何显式值(注意驼峰命名法)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.truststore.password
使用 TLS 连接到 ZooKeeper 时的信任库密码。覆盖通过zookeeper.ssl.trustStore.password
系统属性设置的任何显式值(注意驼峰命名法)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.truststore.type
使用 TLS 连接到 ZooKeeper 时的信任库类型。覆盖通过zookeeper.ssl.trustStore.type
系统属性设置的任何显式值(注意驼峰命名法)。默认值null
表示将根据信任库的文件扩展名自动检测类型。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
alter.config.policy.class.name
应用于验证的更改配置策略类。该类应该实现该org.apache.kafka.server.policy.AlterConfigPolicy
接口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
alter.log.dirs.replication.quota.window.num
为更改log.dirs复制配额而保留在内存中的样本数
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
alter.log.dirs.replication.quota.window.size.seconds
alter log dirs 复制配额的每个样本的时间跨度
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
authorizer.class.name
实现接口的类的完全限定名称org.apache.kafka.server.authorizer.Authorizer
,代理使用它来进行授权。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
auto.jmx.reporter
已弃用。是否自动包含 JmxReporter,即使它没有在 中列出metric.reporters
。此配置将在 Kafka 4.0 中删除,用户应添加org.apache.kafka.common.metrics.JmxReporter
该配置metric.reporters
以启用 JmxReporter。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
client.quota.callback.class
实现 ClientQuotaCallback 接口的类的完全限定名称,用于确定应用于客户端请求的配额限制。默认情况下,应用存储在 ZooKeeper 中的
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
connection.failed.authentication.delay.ms
身份验证失败时的连接关闭延迟:这是身份验证失败时连接关闭将延迟的时间(以毫秒为单位)。必须将其配置为小于connections.max.idle.ms,以防止连接超时。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.quorum.retry.backoff.ms
尝试重试对给定主题分区的失败请求之前等待的时间。这避免了在某些故障场景下在紧密循环中重复发送请求。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.quota.window.num
控制器突变配额在内存中保留的样本数量
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
controller.quota.window.size.seconds
控制器突变配额的每个样本的时间跨度
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
create.topic.policy.class.name
创建应用于验证的主题策略类。该类应该实现该org.apache.kafka.server.policy.CreateTopicPolicy
接口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
delegate.token.expiry.check.interval.ms
扫描间隔以删除过期的委托令牌。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
kafka.metrics.polling.interval.secs
可在 kafka.metrics.reporters 实现中使用的指标轮询间隔(以秒为单位)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
kafka.metrics.reporters
用作 Yammer 指标自定义报告器的类列表。记者要践行kafka.metrics.KafkaMetricsReporter
特色。如果客户端想要在自定义报告器上公开 JMX 操作,则自定义报告器需要另外实现扩展特征的 MBean 特征,kafka.metrics.KafkaMetricsReporterMBean
以便注册的 MBean 符合标准 MBean 约定。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
listener.security.protocol.map
侦听器名称和安全协议之间的映射。必须定义这一点,以便同一安全协议可在多个端口或 IP 中使用。例如,即使内部和外部流量都需要 SSL,也可以将两者分开。具体来说,用户可以定义名称为 INTERNAL 和 EXTERNAL 的侦听器,并将此属性定义为:“INTERNAL:SSL,EXTERNAL:SSL”。如图所示,键和值由冒号分隔,映射条目由逗号分隔。每个侦听器名称只能在地图中出现一次。通过向配置名称添加规范化前缀(侦听器名称小写),可以为每个侦听器配置不同的安全性(SSL 和 SASL)设置。例如,要为 INTERNAL 侦听器设置不同的密钥库,请使用名称为listener.name.internal.ssl.keystore.location
将被设置。如果未设置侦听器名称的配置,该配置将回退到通用配置(即ssl.keystore.location
)。controller.listener.names
请注意,在 KRaft 中,如果未提供显式映射且未使用其他安全协议,则假定从 定义的侦听器名称到 PLAINTEXT 的默认映射。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
log.message.downconversion.enable
该配置控制是否启用消息格式下转换以满足消费请求。当设置为 时false
,代理将不会为期望旧消息格式的消费者执行向下转换。UNSUPPORTED_VERSION
对于来自此类较旧客户端的消费请求,代理会返回错误响应。此配置不适用于复制到关注者可能需要的任何消息格式转换。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metadata.max.idle.interval.ms
此配置控制活动控制器应将无操作记录写入元数据分区的频率。如果值为 0,则无操作记录不会附加到元数据分区。默认值为 500
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metric.reporters
用作指标报告者的类的列表。实现该org.apache.kafka.common.metrics.MetricsReporter
接口允许插入将收到新指标创建通知的类。JmxReporter 始终包含在内以注册 JMX 统计信息。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metrics.num.samples
为计算指标而维护的样本数量。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metrics.recording.level
指标的最高记录级别。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
metrics.sample.window.ms
计算指标样本的时间窗口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
password.encoder.password.algorithm
用于对动态配置的密码进行编码的密码算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
password.encoder.iterations
用于对动态配置的密码进行编码的迭代计数。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
password.encoder.key.length
用于对动态配置的密码进行编码的密钥长度。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
password.encoder.keyfactory.algorithm
SecretKeyFactory 算法用于对动态配置的密码进行编码。如果可用,默认值为 PBKDF2WithHmacSHA512,否则默认值为 PBKDF2WithHmacSHA1。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
producer.id.expiration.ms
主题分区领导者在生产者 ID 过期之前等待的时间(以毫秒为单位)。 当与其关联的交易仍在进行时,生产者 ID 不会过期。 请注意,如果由于主题的保留设置而删除了生产者 ID 的最后一次写入,则生产者 ID 可能会更快过期。 将此值设置为与 delivery.timeout.ms
相同或更高可以帮助防止重试期间过期并防止消息重复,但默认值对于大多数用例来说应该是合理的。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
quota.window.num
为客户端配额保留在内存中的样本数量
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
quota.window.size.seconds
客户配额每个样本的时间跨度
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replication.quota.window.num
为了复制配额而保留在内存中的样本数量
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
replication.quota.window.size.seconds
每个样本复制配额的时间跨度
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.login.connect.timeout.ms
外部身份验证提供程序连接超时的(可选)值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.login.read.timeout.ms
外部身份验证提供程序读取超时的(可选)值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.login.retry.backoff.max.ms
尝试登录外部身份验证提供程序之间的最长等待时间(可选)值(以毫秒为单位)。Login 使用指数退避算法,初始等待基于 sasl.login.retry.backoff.ms 设置,尝试之间的等待长度将加倍,直至达到 sasl.login.retry.backoff.max 指定的最大等待长度。毫秒设置。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.login.retry.backoff.ms
尝试登录外部身份验证提供程序之间的初始等待时间(可选)值(以毫秒为单位)。Login 使用指数退避算法,初始等待基于 sasl.login.retry.backoff.ms 设置,尝试之间的等待长度将加倍,直至达到 sasl.login.retry.backoff.max 指定的最大等待长度。毫秒设置。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.oauthbearer.clock.skew.seconds
以秒为单位的(可选)值,以允许 OAuth/OIDC 身份提供商和代理的时间之间存在差异。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.oauthbearer.expected.audience
代理的(可选)逗号分隔设置,用于验证 JWT 是否是为预期受众之一颁发的。将检查 JWT 是否有标准 OAuth“aud”声明,如果设置了此值,代理将匹配 JWT 的“aud”声明中的值,以查看是否存在完全匹配。如果不匹配,代理将拒绝 JWT,身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.oauthbearer.expected.issuer
代理用于验证 JWT 是否由预期发行者创建的(可选)设置。将检查 JWT 是否有标准 OAuth“iss”声明,如果设置了该值,代理会将其与 JWT 的“iss”声明中的内容完全匹配。如果不匹配,代理将拒绝 JWT,身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.oauthbearer.jwks.endpoint.refresh.ms
代理在刷新其 JWKS(JSON Web 密钥集)缓存之间等待的(可选)值(以毫秒为单位),该缓存包含用于验证 JWT 签名的密钥。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms
尝试从外部身份验证提供程序检索 JWKS(JSON Web 密钥集)之间的最长等待时间(可选)值(以毫秒为单位)。JWKS 检索使用指数退避算法,并根据 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置进行初始等待,并且两次尝试之间的等待长度将加倍,直至达到 sasl.oauthbearer.jwks 指定的最大等待长度.endpoint.retry.backoff.max.ms 设置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.oauthbearer.jwks.endpoint.retry.backoff.ms
来自外部身份验证提供程序的 JWKS(JSON Web 密钥集)检索尝试之间的初始等待时间(可选)值(以毫秒为单位)。JWKS 检索使用指数退避算法,并根据 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置进行初始等待,并且两次尝试之间的等待长度将加倍,直至达到 sasl.oauthbearer.jwks 指定的最大等待长度.endpoint.retry.backoff.max.ms 设置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.oauthbearer.scope.claim.name
该范围的 OAuth 声明通常被命名为“scope”,但如果 OAuth/OIDC 提供程序对该声明使用不同的名称,则此(可选)设置可以为 JWT 负载声明中包含的范围提供不同的名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
sasl.oauthbearer.sub.claim.name
主题的 OAuth 声明通常命名为“sub”,但如果 OAuth/OIDC 提供程序对该声明使用不同的名称,则此(可选)设置可以为 JWT 负载声明中包含的主题提供不同的名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
security.providers
可配置创建者类的列表,每个类返回一个实现安全算法的提供者。这些类应该实现该org.apache.kafka.common.security.auth.SecurityProviderCreator
接口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.endpoint.identification.algorithm
使用服务器证书验证服务器主机名的端点识别算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.engine.factory.class
org.apache.kafka.common.security.auth.SslEngineFactory 类型的类提供 SSLEngine 对象。默认值为 org.apache.kafka.common.security.ssl.DefaultSslEngineFactory
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.principal.mapping.rules
用于从客户端证书的专有名称映射到短名称的规则列表。规则按顺序进行评估,并且与主体名称匹配的第一条规则用于将其映射到短名称。列表中的任何后续规则都将被忽略。默认情况下,X.500 证书的专有名称将是主体。有关格式的更多详细信息,请参阅安全授权和 acls。请注意,如果配置提供了 KafkaPrincipalBuilder 的扩展,则此配置将被忽略principal.builder.class
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
ssl.secure.random.implementation
用于 SSL 加密操作的 SecureRandom PRNG 实现。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
transaction.abort.timed.out.transaction.cleanup.interval.ms
回滚超时事务的时间间隔
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
transaction.remove.expired.transaction.cleanup.interval.ms
删除因过期而过期的交易的时间transactional.id.expiration.ms
间隔
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.cipher.suites
指定要在 ZooKeeper TLS 协商 (csv) 中使用的已启用密码套件。覆盖通过系统属性设置的任何显式值zookeeper.ssl.ciphersuites
(请注意单个词“密码套件”)。默认值null
表示启用的密码套件列表由正在使用的 Java 运行时确定。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.crl.enable
指定是否在 ZooKeeper TLS 协议中启用证书吊销列表。覆盖通过系统属性设置的任何显式值zookeeper.ssl.crl
(注意较短的名称)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.enabled.protocol
指定 ZooKeeper TLS 协商 (csv) 中启用的协议。覆盖通过zookeeper.ssl.enabledProtocols
系统属性设置的任何显式值(注意驼峰命名法)。默认值null
表示启用的协议将是配置属性的值zookeeper.ssl.protocol
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.endpoint.identification.algorithm
指定是否在 ZooKeeper TLS 协商过程中启用主机名验证,(不区分大小写)“https”表示启用 ZooKeeper 主机名验证,显式空白值表示禁用它(仅建议出于测试目的禁用它)。显式值会覆盖通过系统属性设置的任何“true”或“false”值zookeeper.ssl.hostnameVerification
(请注意不同的名称和值;true 表示 https,false 表示空白)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.ocsp.enable
指定是否在 ZooKeeper TLS 协议中启用在线证书状态协议。覆盖通过系统属性设置的任何显式值zookeeper.ssl.ocsp
(注意较短的名称)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
zookeeper.ssl.protocol
指定 ZooKeeper TLS 协商中使用的协议。显式值会覆盖通过同名zookeeper.ssl.protocol
系统属性设置的任何值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
Update Mode: |
有关代理配置的更多详细信息可以在 scala 类中找到kafka.server.KafkaConfig
。
3.1.1 更新代理配置
从 Kafka 1.1 版开始,一些代理配置可以在不重新启动代理的情况下更新。每个 Broker 配置的更新模式 请参见 Broker ConfigsDynamic Update Mode
栏目。
read-only
:需要重启代理才能更新per-broker
:可能会针对每个经纪商动态更新cluster-wide
:可以作为集群范围内的默认值动态更新。也可以更新为每个经纪商的测试值。
要更改代理 ID 0 的当前代理配置(例如,日志清理线程的数量):
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --alter --add-config log.cleaner.threads=2
描述代理 ID 0 的当前动态代理配置:
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --describe
要删除配置覆盖并恢复为代理 ID 0 的静态配置或默认值(例如,日志清理器线程数):
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 0 --alter --delete-config log.cleaner.threads
某些配置可以配置为集群范围内的默认值,以在整个集群中保持一致的值。集群中的所有代理都会处理集群默认更新。例如,要更新所有代理上的日志清理线程:
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-default --alter --add-config log.cleaner.threads=2
描述当前配置的动态集群范围默认配置:
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-default --describe
所有可在集群级别配置的配置也可以在每个代理级别配置(例如用于测试)。如果在不同级别定义配置值,则使用以下优先顺序:
- 存储在 ZooKeeper 中的动态每个代理配置
- 存储在 ZooKeeper 中的动态集群范围默认配置
- 静态代理配置来自
server.properties
- Kafka 默认,请参阅代理配置
动态更新密码配置
动态更新的密码配置值在存储到 ZooKeeper 之前会被加密。password.encoder.secret
必须配置代理配置 server.properties
才能启用密码配置的动态更新。不同经纪商的秘密可能不同。
用于密码编码的秘密可以随着代理的滚动重启而轮换。当前在 ZooKeeper 中用于编码密码的旧密钥必须在静态代理配置中提供password.encoder.old.secret
,新密钥必须在password.encoder.secret
. 当代理启动时,ZooKeeper 中存储的所有动态密码配置都将使用新密钥重新编码。
kafka-configs.sh
在 Kafka 1.1.x 中,即使密码配置未更改,在更新配置时也必须在每个更改请求中提供所有动态更新的密码配置。此限制将在未来版本中删除。
在启动 Broker 之前更新 ZooKeeper 中的密码配置
从 Kafka 2.0.0 开始,kafka-configs.sh
在启动代理进行引导之前,可以使用 ZooKeeper 更新动态代理配置。这使得所有密码配置都能够以加密形式存储,从而避免了在server.properties
. password.encoder.secret
如果 alter 命令中包含任何密码配置,则还必须指定代理配置。还可以指定附加的加密参数。密码编码器配置不会保留在 ZooKeeper 中。例如,要存储INTERNAL
代理 0 上侦听器的 SSL 密钥密码:
> bin/kafka-configs.sh --zookeeper localhost:2182 --zk-tls-config-file zk_tls_config.properties --entity-type brokers --entity-name 0 --alter --add-config
'listener.name.internal.ssl.key.password=key-password,password.encoder.secret=secret,password.encoder.iterations=8192'
配置listener.name.internal.ssl.key.password
将使用提供的编码器配置以加密形式保存在 ZooKeeper 中。编码器秘密和迭代不会保留在 ZooKeeper 中。
更新现有侦听器的 SSL 密钥库
代理可以配置有效期较短的 SSL 密钥库,以降低证书受损的风险。密钥库可以动态更新,无需重新启动代理。配置名称必须以侦听器前缀作为前缀 listener.name.{listenerName}.
,以便仅更新特定侦听器的密钥库配置。以下配置可以在每个代理级别的单个更改请求中更新:
ssl.keystore.type
ssl.keystore.location
ssl.keystore.password
ssl.key.password
如果侦听器是代理间侦听器,则仅当新密钥库受到为该侦听器配置的信任库信任时才允许更新。对于其他侦听器,代理不会对密钥库执行信任验证。证书必须由签署旧证书的同一证书颁发机构签署,以避免任何客户端身份验证失败。
更新现有侦听器的 SSL 信任库
代理信任库可以动态更新,无需重新启动代理来添加或删除证书。更新后的信任库将用于验证新的客户端连接。配置名称必须以侦听器前缀作为前缀listener.name.{listenerName}.
,以便仅更新特定侦听器的信任库配置。以下配置可以在每个代理级别的单个更改请求中更新:
ssl.truststore.type
ssl.truststore.location
ssl.truststore.password
如果侦听器是代理间侦听器,则仅当该侦听器的现有密钥库受到新信任库的信任时才允许更新。对于其他侦听器,代理在更新之前不会执行信任验证。从新信任库中删除用于签署客户端证书的 CA 证书可能会导致客户端身份验证失败。
更新默认主题配置
代理使用的默认主题配置选项可以在不重新启动代理的情况下更新。这些配置适用于没有主题配置覆盖的主题,以实现等效的每个主题配置。这些配置中的一项或多项可能会在所有代理使用的集群默认级别上被覆盖。
log.segment.bytes
log.roll.ms
log.roll.hours
log.roll.jitter.ms
log.roll.jitter.hours
log.index.size.max.bytes
log.flush.interval.messages
log.flush.interval.ms
log.retention.bytes
log.retention.ms
log.retention.minutes
log.retention.hours
log.index.interval.bytes
log.cleaner.delete.retention.ms
log.cleaner.min.compaction.lag.ms
log.cleaner.max.compaction.lag.ms
log.cleaner.min.cleanable.ratio
log.cleanup.policy
log.segment.delete.delay.ms
unclean.leader.election.enable
min.insync.replicas
max.message.bytes
compression.type
log.preallocate
log.message.timestamp.type
log.message.timestamp.difference.max.ms
unclean.leader.election.enable
从 Kafka 2.0.0 版本开始,当配置动态更新 时,控制器会自动启用不干净的领导者选举 。在 Kafka 1.1.x 版本中,更改unclean.leader.election.enable
仅在选举出新控制器时才会生效。可以通过运行以下命令强制控制器重新选举:
> bin/zookeeper-shell.sh localhost
rmr /controller
更新日志清理器配置
日志清理器配置可以在所有代理使用的集群默认级别动态更新。这些更改将在下一次日志清理迭代中生效。可能会更新其中一项或多项配置:
log.cleaner.threads
log.cleaner.io.max.bytes.per.second
log.cleaner.dedupe.buffer.size
log.cleaner.io.buffer.size
log.cleaner.io.buffer.load.factor
log.cleaner.backoff.ms
更新线程配置
代理使用的各种线程池的大小可以在所有代理使用的集群默认级别动态更新。更新限制在一定范围内,currentSize / 2
以currentSize * 2
确保配置更新得到妥善处理。
num.network.threads
num.io.threads
num.replica.fetchers
num.recovery.threads.per.data.dir
log.cleaner.threads
background.threads
更新 ConnectionQuota 配置
代理允许给定 IP/主机的最大连接数可以在所有代理使用的集群默认级别动态更新。这些更改将应用于新的连接创建,并且新的限制将考虑现有连接计数。
max.connections.per.ip
max.connections.per.ip.overrides
添加和删除监听器
监听器可以动态添加或删除。添加新侦听器时,必须将侦听器的安全配置提供为带有侦听器前缀的侦听器配置listener.name.{listenerName}.
。如果新侦听器使用 SASL,则必须使用带有侦听器和机制前缀的 JAAS 配置属性来提供侦听器的 JAAS 配置sasl.jaas.config
。有关详细信息,请参阅Kafka 代理的 JAAS 配置。
在Kafka 1.1.x版本中,代理间监听器使用的监听器可能不会动态更新。为了将代理间侦听器更新为新侦听器,可以在所有代理上添加新侦听器,而无需重新启动代理。然后需要滚动重新启动才能更新inter.broker.listener.name
。
除了新监听器的所有安全配置之外,以下配置还可以在每个代理级别动态更新:
listeners
advertised.listeners
listener.security.protocol.map
必须使用静态代理配置inter.broker.listener.name
或security.inter.broker.protocol
.
3.2 主题级配置
与主题相关的配置既有服务器默认值,也有可选的每个主题覆盖。如果没有给出每个主题的配置,则使用服务器默认值。可以在主题创建时通过提供一个或多个选项来设置覆盖--config
。此示例创建一个名为my-topic 的主题,具有自定义最大消息大小和刷新率:
> bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic my-topic --partitions 1 \
--replication-factor 1 --config max.message.bytes=64000 --config flush.messages=1
也可以稍后使用 alter configs 命令更改或设置覆盖。此示例更新my-topic的最大消息大小:
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name my-topic
--alter --add-config max.message.bytes=128000
要检查主题上设置的覆盖,您可以执行以下操作
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name my-topic --describe
要删除覆盖,您可以执行以下操作
> bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type topics --entity-name my-topic
--alter --delete-config max.message.bytes
以下是主题级别的配置。服务器对此属性的默认配置在“服务器默认属性”标题下给出。给定的服务器默认配置值仅适用于没有显式主题配置覆盖的主题。
cleanup.policy
此配置指定在日志段上使用的保留策略。当达到保留时间或大小限制时,“删除”策略(默认)将丢弃旧段。“compact”策略将启用日志压缩,它保留每个键的最新值。也可以在逗号分隔的列表中指定这两个策略(例如“delete,compact”)。在这种情况下,旧的段将根据保留时间和大小配置被丢弃,而保留的段将被压缩。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
compression.type
指定给定主题的最终压缩类型。此配置接受标准压缩编解码器('gzip'、'snappy'、'lz4'、'zstd')。它还接受“未压缩”,这相当于不压缩;“生产者”表示保留生产者设置的原始压缩编解码器。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
delete.retention.ms
为日志压缩主题保留删除逻辑删除标记的时间量。此设置还规定了消费者必须完成读取的时间限制(如果消费者从偏移量 0 开始),以确保他们获得最后阶段的有效快照(否则可能会在完成扫描之前收集删除逻辑删除)。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
file.delete.delay.ms
从文件系统中删除文件之前等待的时间
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
flush.messages
此设置允许指定强制同步写入日志的数据的时间间隔。例如,如果将其设置为 1,我们将在每条消息之后进行 fsync;如果是 5,我们将在每 5 条消息后进行 fsync。一般来说,我们建议您不要设置此项并使用复制来实现持久性,并允许操作系统的后台刷新功能,因为它更高效。可以根据每个主题覆盖此设置(请参阅每个主题配置部分)。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
flush.ms
此设置允许指定强制同步写入日志的数据的时间间隔。例如,如果将其设置为 1000,我们将在 1000 毫秒过去后进行 fsync。一般来说,我们建议您不要设置此项并使用复制来实现持久性,并允许操作系统的后台刷新功能,因为它更高效。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
follower.replication.throttled.replicas
应在从属端限制其日志复制的副本列表。该列表应以 [PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:... 的形式描述一组副本,或者可以使用通配符“*”来限制该主题的所有副本。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
index.interval.bytes
此设置控制 Kafka 将索引条目添加到其偏移索引的频率。默认设置确保我们大约每 4096 字节索引一条消息。更多索引允许读取跳转到更接近日志中的确切位置,但会使索引更大。您可能不需要更改此设置。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
leader.replication.throttled.replicas
应在领导者端限制其日志复制的副本列表。该列表应以 [PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:... 的形式描述一组副本,或者可以使用通配符“*”来限制该主题的所有副本。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
max.compaction.lag.ms
消息在日志中不符合压缩条件的最长时间。仅适用于正在压缩的日志。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
max.message.bytes
Kafka 允许的最大记录批量大小(如果启用压缩,则在压缩后)。如果增加此值并且存在早于 0.10.2 的消费者,则消费者的获取大小也必须增加,以便他们可以获取这么大的记录批次。在最新的消息格式版本中,为了提高效率,记录总是分组为批次。在以前的消息格式版本中,未压缩的记录不会分组为批次,并且此限制仅适用于这种情况下的单个记录。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
message.format.version
[已弃用] 指定代理将用于将消息附加到日志的消息格式版本。如果“inter.broker.protocol.version”为 3.0 或更高,则此配置的值始终假定为“3.0”(忽略实际配置值)。否则,该值应该是有效的 ApiVersion。一些示例是:0.10.0、1.1、2.8、3.0。通过设置特定的消息格式版本,用户可以证明磁盘上的所有现有消息都小于或等于指定的版本。错误地设置此值将导致使用旧版本的消费者崩溃,因为他们将收到他们不理解的格式的消息。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
message.timestamp.difference.max.ms
代理收到消息时的时间戳与消息中指定的时间戳之间允许的最大差异。如果message.timestamp.type=CreateTime,则如果时间戳差异超过此阈值,消息将被拒绝。如果 message.timestamp.type=LogAppendTime,则忽略此配置。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
message.timestamp.type
Define whether the timestamp in the message is message create time or log append time. The value should be either `CreateTime` or `LogAppendTime`
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
min.cleanable.dirty.ratio
This configuration controls how frequently the log compactor will attempt to clean the log (assuming log compaction is enabled). By default we will avoid cleaning a log where more than 50% of the log has been compacted. This ratio bounds the maximum space wasted in the log by duplicates (at 50% at most 50% of the log could be duplicates). A higher ratio will mean fewer, more efficient cleanings but will mean more wasted space in the log. If the max.compaction.lag.ms or the min.compaction.lag.ms configurations are also specified, then the log compactor considers the log to be eligible for compaction as soon as either: (i) the dirty ratio threshold has been met and the log has had dirty (uncompacted) records for at least the min.compaction.lag.ms duration, or (ii) if the log has had dirty (uncompacted) records for at most the max.compaction.lag.ms period.
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
min.compaction.lag.ms
The minimum time a message will remain uncompacted in the log. Only applicable for logs that are being compacted.
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
min.insync.replicas
When a producer sets acks to "all" (or "-1"), this configuration specifies the minimum number of replicas that must acknowledge a write for the write to be considered successful. If this minimum cannot be met, then the producer will raise an exception (either NotEnoughReplicas or NotEnoughReplicasAfterAppend).
When used together, min.insync.replicas
and acks
allow you to enforce greater durability guarantees. A typical scenario would be to create a topic with a replication factor of 3, set min.insync.replicas
to 2, and produce with acks
of "all". This will ensure that the producer raises an exception if a majority of replicas do not receive a write.
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
preallocate
如果我们在创建新日志段时应该在磁盘上预分配文件,则为 true。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
retention.bytes
如果我们使用“删除”保留策略,此配置控制分区(由日志段组成)在我们丢弃旧日志段以释放空间之前可以增长到的最大大小。默认情况下,没有大小限制,只有时间限制。由于此限制是在分区级别强制实施的,因此将其乘以分区数即可计算主题保留时间(以字节为单位)。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
retention.ms
如果我们使用“删除”保留策略,此配置控制我们在丢弃旧日志段以释放空间之前保留日志的最长时间。这代表了关于消费者必须多快读取其数据的 SLA。如果设置为 -1,则不应用时间限制。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
segment.bytes
此配置控制日志的段文件大小。保留和清理总是一次对一个文件进行,因此较大的段大小意味着文件较少,但对保留的粒度控制较小。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
segment.index.bytes
此配置控制将偏移量映射到文件位置的索引的大小。我们预先分配该索引文件,并仅在日志滚动后收缩它。您通常不需要更改此设置。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
segment.jitter.ms
从预定的分段滚动时间中减去最大随机抖动,以避免分段滚动的雷群
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
segment.ms
此配置控制一段时间后,即使段文件未满,Kafka也会强制日志滚动,以确保保留可以删除或压缩旧数据。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
unclean.leader.election.enable
指示是否将不在 ISR 集中的副本作为最后手段选举为领导者,即使这样做可能会导致数据丢失。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
message.downconversion.enable
该配置控制是否启用消息格式下转换以满足消费请求。当设置为 时false
,代理将不会为期望旧消息格式的消费者执行向下转换。UNSUPPORTED_VERSION
对于来自此类较旧客户端的消费请求,代理会返回错误响应。此配置不适用于复制到关注者可能需要的任何消息格式转换。
Type: |
---|
Default: |
Valid Values: |
Server Default Property: |
Importance: |
3.3 生产者配置
下面是生产者的配置:
key.serializer
实现该org.apache.kafka.common.serialization.Serializer
接口的键的序列化器类。
Type: |
---|
Default: |
Valid Values: |
Importance: |
value.serializer
实现org.apache.kafka.common.serialization.Serializer
接口的值的序列化器类。
Type: |
---|
Default: |
Valid Values: |
Importance: |
bootstrap.servers
用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用所有服务器,无论此处指定哪些服务器进行引导 - 该列表仅影响用于发现全套服务器的初始主机。该列表应采用以下形式host1:port1,host2:port2,...
。由于这些服务器仅用于初始连接以发现完整的集群成员资格(可能会动态更改),因此此列表不需要包含完整的服务器集(不过,您可能需要多个服务器,以防服务器停机) 。
Type: |
---|
Default: |
Valid Values: |
Importance: |
buffer.memory
生产者可用于缓冲等待发送到服务器的记录的内存总字节数。如果记录的发送速度快于传送到服务器的速度,生产者将阻塞,max.block.ms
然后抛出异常。
此设置应大致对应于生产者将使用的总内存,但不是硬限制,因为并非生产者使用的所有内存都用于缓冲。一些额外的内存将用于压缩(如果启用压缩)以及维护正在进行的请求。
Type: |
---|
Default: |
Valid Values: |
Importance: |
compression.type
生产者生成的所有数据的压缩类型。默认值为无(即不压缩)。有效值为none
、gzip
、snappy
、lz4
或zstd
。压缩是对整批数据进行压缩,因此批处理的效果也会影响压缩率(批处理越多意味着压缩效果越好)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
retries
设置大于零的值将导致客户端重新发送发送失败并可能出现暂时性错误的任何记录。请注意,此重试与客户端在收到错误后重新发送记录没有什么不同。delivery.timeout.ms
如果在成功确认之前配置的超时时间先到期,则在重试次数用完之前,生产请求将失败。用户通常应该更愿意保留此配置未设置,而是用于delivery.timeout.ms
控制重试行为。
启用幂等性要求此配置值大于 0。如果设置了冲突的配置并且未显式启用幂等性,则幂等性将被禁用。
在设置enable.idempotence
为1false
或max.in.flight.requests.per.connection
大于 1 时允许重试可能会更改记录的顺序,因为如果将两个批次发送到单个分区,并且第一个批次失败并重试,但第二个成功,则第二个批次中的记录可能会先出现。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.key.password
密钥存储文件中私钥的密码或“ssl.keystore.key”中指定的 PEM 密钥的密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.certificate.chain
证书链采用“ssl.keystore.type”指定的格式。默认 SSL 引擎工厂仅支持带有 X.509 证书列表的 PEM 格式
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.key
私钥采用“ssl.keystore.type”指定的格式。默认 SSL 引擎工厂仅支持带有 PKCS#8 密钥的 PEM 格式。如果密钥已加密,则必须使用“ssl.key.password”指定密钥密码
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.location
密钥存储文件的位置。这对客户端来说是可选的,可用于客户端的双向身份验证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.password
密钥存储文件的存储密码。这对于客户端来说是可选的,并且仅在配置了“ssl.keystore.location”时才需要。PEM 格式不支持密钥存储密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.certificate
采用“ssl.truststore.type”指定格式的受信任证书。默认 SSL 引擎工厂仅支持带有 X.509 证书的 PEM 格式。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.location
信任存储文件的位置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.password
信任存储文件的密码。如果未设置密码,仍将使用配置的信任存储文件,但禁用完整性检查。PEM 格式不支持信任存储密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
batch.size
每当多个记录发送到同一分区时,生产者将尝试将记录一起批处理为更少的请求。这有助于提高客户端和服务器的性能。此配置控制默认批量大小(以字节为单位)。
不会尝试批量记录大于此大小的记录。
发送到代理的请求将包含多个批次,每个批次对应一个可发送数据的分区。
A small batch size will make batching less common and may reduce throughput (a batch size of zero will disable batching entirely). A very large batch size may use memory a bit more wastefully as we will always allocate a buffer of the specified batch size in anticipation of additional records.
Note: This setting gives the upper bound of the batch size to be sent. If we have fewer than this many bytes accumulated for this partition, we will 'linger' for the linger.ms
time waiting for more records to show up. This linger.ms
setting defaults to 0, which means we'll immediately send out a record even the accumulated batch size is under this batch.size
setting.
Type: |
---|
Default: |
Valid Values: |
Importance: |
client.dns.lookup
Controls how the client uses DNS lookups. If set to use_all_dns_ips
, connect to each returned IP address in sequence until a successful connection is established. After a disconnection, the next IP is used. Once all IPs have been used once, the client resolves the IP(s) from the hostname again (both the JVM and the OS cache DNS name lookups, however). If set to resolve_canonical_bootstrap_servers_only
, resolve each bootstrap address into a list of canonical names. After the bootstrap phase, this behaves the same as use_all_dns_ips
.
Type: |
---|
Default: |
Valid Values: |
Importance: |
client.id
An id string to pass to the server when making requests. The purpose of this is to be able to track the source of requests beyond just ip/port by allowing a logical application name to be included in server-side request logging.
Type: |
---|
Default: |
Valid Values: |
Importance: |
connections.max.idle.ms
Close idle connections after the number of milliseconds specified by this config.
Type: |
---|
Default: |
Valid Values: |
Importance: |
delivery.timeout.ms
An upper bound on the time to report success or failure after a call to send()
returns. This limits the total time that a record will be delayed prior to sending, the time to await acknowledgement from the broker (if expected), and the time allowed for retriable send failures. The producer may report failure to send a record earlier than this config if either an unrecoverable error is encountered, the retries have been exhausted, or the record is added to a batch which reached an earlier delivery expiration deadline. The value of this config should be greater than or equal to the sum of request.timeout.ms
and linger.ms
.
Type: |
---|
Default: |
Valid Values: |
Importance: |
linger.ms
The producer groups together any records that arrive in between request transmissions into a single batched request. Normally this occurs only under load when records arrive faster than they can be sent out. However in some circumstances the client may want to reduce the number of requests even under moderate load. This setting accomplishes this by adding a small amount of artificial delay—that is, rather than immediately sending out a record, the producer will wait for up to the given delay to allow other records to be sent so that the sends can be batched together. This can be thought of as analogous to Nagle's algorithm in TCP. This setting gives the upper bound on the delay for batching: once we get batch.size
无论此设置如何,都会立即发送分区的记录价值,但是,如果该分区累积的字节数少于这么多,我们将“徘徊”指定的时间,等待更多记录显示。该设置默认为 0(即无延迟)。例如,设置linger.ms=5
可以减少发送的请求数量,但会在没有负载的情况下为发送的记录增加最多 5 毫秒的延迟。
Type: |
---|
Default: |
Valid Values: |
Importance: |
max.block.ms
KafkaProducer
配置控制send()
、partitionsFor()
、initTransactions()
、sendOffsetsToTransaction()
和commitTransaction()
方法将阻塞多长时间abortTransaction()
。对于send()
此超时限制等待元数据获取和缓冲区分配的总时间(用户提供的序列化器或分区器中的阻塞不计入此超时)。对于partitionsFor()
此超时,限制了等待元数据(如果元数据不可用)所花费的时间。与事务相关的方法始终会阻塞,但如果无法发现事务协调器或在超时内未响应,则可能会超时。
Type: |
---|
Default: |
Valid Values: |
Importance: |
max.request.size
请求的最大大小(以字节为单位)。此设置将限制生产者在单个请求中发送的记录批次数量,以避免发送巨大的请求。这实际上也是最大未压缩记录批量大小的上限。请注意,服务器对记录批量大小有自己的上限(如果启用了压缩,则在压缩后),这可能与此不同。
Type: |
---|
Default: |
Valid Values: |
Importance: |
partitioner.class
用于确定生成记录时要发送到哪个分区的类。可用选项有:
- 如果未设置,则使用默认分区逻辑。该策略将尝试坚持一个分区,直到至少为该分区生成了batch.size字节。它适用于以下策略:
- 如果未指定分区但存在密钥,则根据密钥的哈希值选择分区
- 如果不存在分区或键,则选择当至少为该分区生成batch.size字节时更改的粘性分区。
org.apache.kafka.clients.producer.RoundRobinPartitioner
:这种分区策略是一系列连续记录中的每条记录将被发送到不同的分区(无论是否提供“key”),直到我们用完分区并重新开始。注意:有一个已知问题会导致创建新批次时分布不均匀。请查看 KAFKA-9965 了解更多详情。
实现该org.apache.kafka.clients.producer.Partitioner
接口允许您插入自定义分区器。
Type: |
---|
Default: |
Valid Values: |
Importance: |
partitioner.ignore.keys
当设置为“true”时,生产者将不会使用记录键来选择分区。如果为“false”,则当存在密钥时,生产者将根据密钥的哈希值选择分区。注意:如果使用自定义分区程序,此设置无效。
Type: |
---|
Default: |
Valid Values: |
Importance: |
receive.buffer.bytes
读取数据时使用的 TCP 接收缓冲区 (SO_RCVBUF) 的大小。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
request.timeout.ms
该配置控制客户端等待请求响应的最长时间。如果在超时之前未收到响应,则客户端将在必要时重新发送请求,或者在重试次数耗尽时使请求失败。这应该大于replica.lag.time.max.ms
(代理配置),以减少由于不必要的生产者重试而导致消息重复的可能性。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.client.callback.handler.class
实现 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理程序类的完全限定名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.jaas.config
SASL 连接的 JAAS 登录上下文参数采用 JAAS 配置文件使用的格式。JAAS 配置文件格式描述如下。该值的格式为:loginModuleClass controlFlag (optionName=optionValue)*;
。对于代理,配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,需要listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule;
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.service.name
Kafka 运行时使用的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 的配置中定义。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.callback.handler.class
实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理程序类的完全限定名称。对于代理,登录回调处理程序配置必须以侦听器前缀和小写的 SASL 机制名称为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.class
实现 Login 接口的类的完全限定名称。对于代理,登录配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.mechanism
用于客户端连接的 SASL 机制。这可以是安全提供者可用的任何机制。GSSAPI 是默认机制。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.url
OAuth/OIDC 提供者 URL,提供者的JWKS(JSON Web 密钥集)可以检索。URL 可以基于 HTTP(S) 或基于文件。如果 URL 基于 HTTP(S),则将通过代理启动时配置的 URL 从 OAuth/OIDC 提供程序检索 JWKS 数据。所有当时的密钥都将缓存在代理上以用于传入请求。如果收到 JWT 的身份验证请求,其中包含尚未在缓存中的“kid”标头声明值,则将根据需要再次查询 JWKS 端点。但是,代理会每隔 sasl.oauthbearer.jwks.endpoint.refresh.ms 毫秒轮询一次 URL,以便在收到包含这些密钥的任何 JWT 请求之前使用任何即将到来的密钥刷新缓存。如果 URL 是基于文件的,代理将在启动时从配置的位置加载 JWKS 文件。如果 JWT 包含 JWKS 文件中不存在的“kid”标头值,
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.token.endpoint.url
OAuth/OIDC 身份提供商的 URL。如果 URL 基于 HTTP(S),则它是颁发者的令牌端点 URL,将根据 sasl.jaas.config 中的配置发出登录请求。如果 URL 是基于文件的,则它指定一个包含 OAuth/OIDC 身份提供商颁发的访问令牌(JWT 序列化形式)的文件,用于授权。
Type: |
---|
Default: |
Valid Values: |
Importance: |
security.protocol
用于与broker通信的协议。有效值为:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL。
Type: |
---|
Default: |
Valid Values: |
Importance: |
send.buffer.bytes
发送数据时使用的 TCP 发送缓冲区 (SO_SNDBUF) 的大小。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
socket.connection.setup.timeout.max.ms
客户端等待建立套接字连接的最长时间。对于每个连续的连接失败,连接设置超时将呈指数增长,直至达到此最大值。为了避免连接风暴,将对超时应用 0.2 的随机化因子,从而产生比计算值低 20% 到高 20% 之间的随机范围。
Type: |
---|
Default: |
Valid Values: |
Importance: |
socket.connection.setup.timeout.ms
客户端等待建立套接字连接的时间。如果在超时之前未建立连接,客户端将关闭套接字通道。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.enabled.protocol
为 SSL 连接启用的协议列表。使用 Java 11 或更高版本运行时,默认值为“TLSv1.2、TLSv1.3”,否则为“TLSv1.2”。使用 Java 11 的默认值,如果客户端和服务器都支持 TLSv1.3,则首选 TLSv1.3,否则回退到 TLSv1.2(假设两者至少支持 TLSv1.2)。对于大多数情况,此默认值应该没问题。另请参阅“ssl.protocol”的配置文档。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.type
密钥存储文件的文件格式。这对于客户来说是可选的。默认 `ssl.engine.factory.class` 当前支持的值为 [JKS、PKCS12、PEM]。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.protocol
用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更高版本运行时,默认值为“TLSv1.3”,否则为“TLSv1.2”。该值对于大多数用例来说应该没问题。最新 JVM 中允许的值为“TLSv1.2”和“TLSv1.3”。较旧的 JVM 可能支持“TLS”、“TLSv1.1”、“SSL”、“SSLv2”和“SSLv3”,但由于已知的安全漏洞,不鼓励使用它们。使用此配置和“ssl.enabled.protocols”的默认值,如果服务器不支持“TLSv1.3”,客户端将降级到“TLSv1.2”。如果此配置设置为“TLSv1.2”,客户端将不会使用“TLSv1.3”,即使它是 ssl.enabled.protocols 中的值之一,并且服务器仅支持“TLSv1.3”。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.provider
用于 SSL 连接的安全提供程序的名称。默认值是 JVM 的默认安全提供程序。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.type
信任存储文件的文件格式。默认 `ssl.engine.factory.class` 当前支持的值为 [JKS、PKCS12、PEM]。
Type: |
---|
Default: |
Valid Values: |
Importance: |
acks
生产者要求领导者在考虑请求完成之前收到的确认数量。这控制发送的记录的持久性。允许以下设置:
acks=0
如果设置为零,则生产者根本不会等待服务器的任何确认。该记录将立即添加到套接字缓冲区并被视为已发送。在这种情况下,不能保证服务器已收到记录,并且配置retries
不会生效(因为客户端通常不会知道任何失败)。为每个记录返回的偏移量将始终设置为-1
。acks=1
这意味着领导者会将记录写入其本地日志,但会在不等待所有追随者完全确认的情况下做出响应。在这种情况下,如果领导者在确认记录后但在追随者复制记录之前立即失败,那么记录将丢失。acks=all
这意味着领导者将等待完整的同步副本集确认记录。这保证了只要至少一个同步副本保持活动状态,记录就不会丢失。这是最强有力的保证。这相当于 acks=-1 设置。
请注意,启用幂等性要求此配置值为“all”。如果设置了冲突的配置并且未显式启用幂等性,则幂等性将被禁用。
Type: |
---|
Default: |
Valid Values: |
Importance: |
auto.jmx.reporter
已弃用。是否自动包含 JmxReporter,即使它没有在 中列出metric.reporters
。此配置将在 Kafka 4.0 中删除,用户应添加org.apache.kafka.common.metrics.JmxReporter
该配置metric.reporters
以启用 JmxReporter。
Type: |
---|
Default: |
Valid Values: |
Importance: |
enable.idempotence
当设置为“true”时,生产者将确保每条消息的一份副本准确写入流中。如果为“false”,则生产者由于代理故障等原因重试,可能会在流中写入重试消息的重复项。请注意,启用幂等性要求max.in.flight.requests.per.connection
小于或等于 5(为任何允许的值保留消息排序)、retries
大于 0,并且acks
必须为“全部”。
如果没有设置冲突的配置,则默认启用幂等性。如果设置了冲突的配置并且未显式启用幂等性,则幂等性将被禁用。如果显式启用幂等性并且设置了冲突的配置,ConfigException
则会抛出 a 。
Type: |
---|
Default: |
Valid Values: |
Importance: |
interceptor.classes
用作拦截器的类的列表。实现该org.apache.kafka.clients.producer.ProducerInterceptor
接口允许您在将生产者收到的记录发布到 Kafka 集群之前拦截(并可能改变)这些记录。默认情况下,没有拦截器。
Type: |
---|
Default: |
Valid Values: |
Importance: |
max.in.flight.requests.per.connection
客户端在阻塞之前在单个连接上发送的未确认请求的最大数量。注意,如果该配置设置大于1且enable.idempotence
设置为false,则存在因重试导致发送失败后消息重新排序的风险(即如果启用了重试);如果禁用重试或enable.idempotence
设置为 true,则将保留排序。此外,启用幂等性要求此配置的值小于或等于 5。如果设置了冲突的配置并且未显式启用幂等性,则幂等性将被禁用。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metadata.max.age.ms
即使我们没有看到任何分区领导层发生变化以主动发现任何新的代理或分区,我们也会强制刷新元数据,以毫秒为单位的时间段。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metadata.max.idle.ms
控制生产者为空闲主题缓存元数据的时间。如果自上次生成主题以来经过的时间超过了元数据空闲持续时间,则该主题的元数据将被遗忘,并且下次访问该主题将强制执行元数据获取请求。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metric.reporters
用作指标报告者的类的列表。实现该org.apache.kafka.common.metrics.MetricsReporter
接口允许插入将收到新指标创建通知的类。JmxReporter 始终包含在内以注册 JMX 统计信息。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.num.samples
为计算指标而维护的样本数量。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.recording.level
指标的最高记录级别。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.sample.window.ms
计算指标样本的时间窗口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
partitioner.adaptive.partitioning.enable
当设置为“true”时,生产者将尝试适应代理性能并向更快代理上托管的分区生成更多消息。如果为“false”,生产者将尝试统一分发消息。注意:如果使用自定义分区程序,此设置无效
Type: |
---|
Default: |
Valid Values: |
Importance: |
partitioner.availability.timeout.ms
如果代理在一段partitioner.availability.timeout.ms
时间内无法处理来自分区的生产请求,则分区程序会将该分区视为不可用。如果值为 0,则禁用此逻辑。partitioner.adaptive.partitioning.enable
注意:如果使用自定义分区程序或设置为“false”,则此设置无效
Type: |
---|
Default: |
Valid Values: |
Importance: |
reconnect.backoff.max.ms
重新连接到多次连接失败的代理时等待的最长时间(以毫秒为单位)。如果提供,每个主机的退避将在每次连续连接失败时呈指数增加,直至达到此最大值。计算退避增量后,添加 20% 的随机抖动以避免连接风暴。
Type: |
---|
Default: |
Valid Values: |
Importance: |
reconnect.backoff.ms
尝试重新连接到给定主机之前等待的基本时间量。这避免了在紧密循环中重复连接到主机。此退避适用于客户端与代理的所有连接尝试。
Type: |
---|
Default: |
Valid Values: |
Importance: |
retry.backoff.ms
尝试重试对给定主题分区的失败请求之前等待的时间。这避免了在某些故障场景下在紧密循环中重复发送请求。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.kinit.cmd
Kerberos kinit 命令路径。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.min.time.before.relogin
刷新尝试之间的登录线程睡眠时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.ticket.renew.jitter
添加到更新时间的随机抖动的百分比。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.ticket.renew.window.factor
登录线程将休眠,直到达到从上次刷新到票证到期的指定时间窗口因子,此时它将尝试更新票证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.connect.timeout.ms
外部身份验证提供程序连接超时的(可选)值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.read.timeout.ms
外部身份验证提供程序读取超时的(可选)值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.buffer.seconds
刷新凭证时在凭证过期前维持的缓冲时间量(以秒为单位)。如果刷新发生的时间比缓冲秒数更接近到期,则刷新将向上移动以维持尽可能多的缓冲时间。合法值介于 0 到 3600(1 小时)之间;如果未指定值,则使用默认值 300(5 分钟)。如果该值和 sasl.login.refresh.min.period.seconds 的总和超过凭证的剩余生命周期,则它们都会被忽略。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.min.period.seconds
登录刷新线程在刷新凭据之前等待的所需最短时间(以秒为单位)。合法值介于 0 到 900(15 分钟)之间;如果未指定值,则使用默认值 60(1 分钟)。如果该值和 sasl.login.refresh.buffer.seconds 的总和超过凭证的剩余生命周期,则它们都会被忽略。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.window.factor
登录刷新线程将休眠,直到达到相对于凭证生命周期的指定窗口因子,此时它将尝试刷新凭证。合法值介于 0.5 (50%) 和 1.0 (100%)(含)之间;如果未指定值,则使用默认值 0.8 (80%)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.window.jitter
相对于添加到登录刷新线程睡眠时间的凭证生命周期的最大随机抖动量。合法值介于 0 和 0.25 (25%) 之间(含);如果未指定值,则使用默认值 0.05 (5%)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.retry.backoff.max.ms
尝试登录外部身份验证提供程序之间的最长等待时间(可选)值(以毫秒为单位)。Login 使用指数退避算法,初始等待基于 sasl.login.retry.backoff.ms 设置,尝试之间的等待长度将加倍,直至达到 sasl.login.retry.backoff.max 指定的最大等待长度。毫秒设置。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.retry.backoff.ms
尝试登录外部身份验证提供程序之间的初始等待时间(可选)值(以毫秒为单位)。Login 使用指数退避算法,初始等待基于 sasl.login.retry.backoff.ms 设置,尝试之间的等待长度将加倍,直至达到 sasl.login.retry.backoff.max 指定的最大等待长度。毫秒设置。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.clock.skew.seconds
以秒为单位的(可选)值,以允许 OAuth/OIDC 身份提供商和代理的时间之间存在差异。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.expected.audience
代理的(可选)逗号分隔设置,用于验证 JWT 是否是为预期受众之一颁发的。将检查 JWT 是否有标准 OAuth“aud”声明,如果设置了此值,代理将匹配 JWT 的“aud”声明中的值,以查看是否存在完全匹配。如果不匹配,代理将拒绝 JWT,身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.expected.issuer
代理用于验证 JWT 是否由预期发行者创建的(可选)设置。将检查 JWT 是否有标准 OAuth“iss”声明,如果设置了该值,代理会将其与 JWT 的“iss”声明中的内容完全匹配。如果不匹配,代理将拒绝 JWT,身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.refresh.ms
代理在刷新其 JWKS(JSON Web 密钥集)缓存之间等待的(可选)值(以毫秒为单位),该缓存包含用于验证 JWT 签名的密钥。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms
尝试从外部身份验证提供程序检索 JWKS(JSON Web 密钥集)之间的最长等待时间(可选)值(以毫秒为单位)。JWKS 检索使用指数退避算法,并根据 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置进行初始等待,并且两次尝试之间的等待长度将加倍,直至达到 sasl.oauthbearer.jwks 指定的最大等待长度.endpoint.retry.backoff.max.ms 设置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.retry.backoff.ms
来自外部身份验证提供程序的 JWKS(JSON Web 密钥集)检索尝试之间的初始等待时间(可选)值(以毫秒为单位)。JWKS 检索使用指数退避算法,并根据 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置进行初始等待,并且两次尝试之间的等待长度将加倍,直至达到 sasl.oauthbearer.jwks 指定的最大等待长度.endpoint.retry.backoff.max.ms 设置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.scope.claim.name
该范围的 OAuth 声明通常被命名为“scope”,但如果 OAuth/OIDC 提供程序对该声明使用不同的名称,则此(可选)设置可以为 JWT 负载声明中包含的范围提供不同的名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.sub.claim.name
主题的 OAuth 声明通常命名为“sub”,但如果 OAuth/OIDC 提供程序对该声明使用不同的名称,则此(可选)设置可以为 JWT 负载声明中包含的主题提供不同的名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
security.providers
可配置创建者类的列表,每个类返回一个实现安全算法的提供者。这些类应该实现该org.apache.kafka.common.security.auth.SecurityProviderCreator
接口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.cipher.suites
密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下,支持所有可用的密码套件。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.endpoint.identification.algorithm
使用服务器证书验证服务器主机名的端点识别算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.engine.factory.class
org.apache.kafka.common.security.auth.SslEngineFactory 类型的类提供 SSLEngine 对象。默认值为 org.apache.kafka.common.security.ssl.DefaultSslEngineFactory
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keymanager.algorithm
密钥管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的密钥管理器工厂算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.secure.random.implementation
用于 SSL 加密操作的 SecureRandom PRNG 实现。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.trustmanager.algorithm
信任管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的信任管理器工厂算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
transaction.timeout.ms
在协调器主动中止事务之前,事务保持打开状态的最长时间(以毫秒为单位)。事务的开始时间是在将第一个分区添加到其中时设置的。如果该值大于transaction.max.timeout.ms
代理中的设置,请求将失败并出现InvalidTxnTimeoutException
错误。
Type: |
---|
Default: |
Valid Values: |
Importance: |
transactional.id
用于事务交付的 TransactionalId。这使得跨多个生产者会话的可靠性语义成为可能,因为它允许客户端保证使用相同 TransactionalId 的事务在开始任何新事务之前已完成。如果未提供 TransactionalId,则生产者仅限于幂等传递。如果配置了 TransactionalId,enable.idempotence
则隐含。默认情况下没有配置TransactionId,这意味着不能使用事务。请注意,默认情况下,事务需要至少包含三个代理的集群,这是生产环境的推荐设置;对于开发,您可以通过调整代理设置来更改此设置transaction.state.log.replication.factor
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
3.4 消费者配置
以下是消费者的配置:
key.deserializer
实现该org.apache.kafka.common.serialization.Deserializer
接口的键的反序列化器类。
Type: |
---|
Default: |
Valid Values: |
Importance: |
value.deserializer
实现org.apache.kafka.common.serialization.Deserializer
接口的值的反序列化器类。
Type: |
---|
Default: |
Valid Values: |
Importance: |
bootstrap.servers
用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用所有服务器,无论此处指定哪些服务器进行引导 - 该列表仅影响用于发现全套服务器的初始主机。该列表应采用以下形式host1:port1,host2:port2,...
。由于这些服务器仅用于初始连接以发现完整的集群成员资格(可能会动态更改),因此此列表不需要包含完整的服务器集(不过,您可能需要多个服务器,以防服务器停机) 。
Type: |
---|
Default: |
Valid Values: |
Importance: |
fetch.min.bytes
服务器应为获取请求返回的最小数据量。如果可用数据不足,请求将等待积累足够多的数据,然后再答复请求。默认设置 1 字节意味着,只要有那么多字节的数据可用,或者获取请求在等待数据到达时超时,就会立即应答获取请求。将其设置为较大的值将导致服务器等待大量数据的积累,这可以稍微提高服务器吞吐量,但会带来一些额外的延迟。
Type: |
---|
Default: |
Valid Values: |
Importance: |
group.id
标识该消费者所属的消费者组的唯一字符串。如果消费者使用组管理功能subscribe(topic)
或基于 Kafka 的偏移量管理策略,则需要此属性。
Type: |
---|
Default: |
Valid Values: |
Importance: |
heartbeat.interval.ms
使用 Kafka 的组管理设施时向消费者协调器发出心跳的预期时间间隔。心跳用于确保消费者的会话保持活动状态,并在新消费者加入或离开组时促进重新平衡。该值必须设置为低于session.timeout.ms
,但通常不应高于该值的 1/3。它可以调整得更低,以控制正常重新平衡的预期时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
max.partition.fetch.bytes
服务器将返回的每个分区的最大数据量。记录由消费者批量获取。如果提取的第一个非空分区中的第一个记录批次大于此限制,该批次仍将被返回以确保消费者可以取得进展。代理接受的最大记录批量大小是通过message.max.bytes
(代理配置)或max.message.bytes
(主题配置)定义的。请参阅 fetch.max.bytes 以限制消费者请求大小。
Type: |
---|
Default: |
Valid Values: |
Importance: |
session.timeout.ms
使用 Kafka 的组管理工具时用于检测客户端故障的超时。客户端定期发送心跳以向代理表明其活跃度。如果在此会话超时到期之前代理没有收到心跳,则代理将从组中删除该客户端并启动重新平衡。请注意,该值必须在代理配置中group.min.session.timeout.ms
和所配置的允许范围内group.max.session.timeout.ms
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.key.password
密钥存储文件中私钥的密码或“ssl.keystore.key”中指定的 PEM 密钥的密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.certificate.chain
证书链采用“ssl.keystore.type”指定的格式。默认 SSL 引擎工厂仅支持带有 X.509 证书列表的 PEM 格式
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.key
私钥采用“ssl.keystore.type”指定的格式。默认 SSL 引擎工厂仅支持带有 PKCS#8 密钥的 PEM 格式。如果密钥已加密,则必须使用“ssl.key.password”指定密钥密码
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.location
密钥存储文件的位置。这对客户端来说是可选的,可用于客户端的双向身份验证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.password
密钥存储文件的存储密码。这对于客户端来说是可选的,并且仅在配置了“ssl.keystore.location”时才需要。PEM 格式不支持密钥存储密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.certificate
采用“ssl.truststore.type”指定格式的受信任证书。默认 SSL 引擎工厂仅支持带有 X.509 证书的 PEM 格式。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.location
信任存储文件的位置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.password
信任存储文件的密码。如果未设置密码,仍将使用配置的信任存储文件,但禁用完整性检查。PEM 格式不支持信任存储密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
allow.auto.create.topics
订阅或分配主题时允许在代理上自动创建主题。仅当代理允许使用“auto.create.topics.enable”代理配置时,才会自动创建订阅的主题。使用早于 0.11.0 的代理时,此配置必须设置为“false”
Type: |
---|
Default: |
Valid Values: |
Importance: |
auto.offset.reset
当 Kafka 中没有初始偏移量或者当前偏移量在服务器上不再存在时(例如因为该数据已被删除)该怎么办:
- 最早:自动将偏移量重置为最早的偏移量
- 最新:自动将偏移量重置为最新偏移量
- none:如果没有找到消费者组的先前偏移量,则向消费者抛出异常
- 其他任何事情:向消费者抛出异常。
Type: |
---|
Default: |
Valid Values: |
Importance: |
client.dns.lookup
控制客户端如何使用 DNS 查找。如果设置为use_all_dns_ips
,则按顺序连接每个返回的 IP 地址,直到建立成功连接。断开连接后,将使用下一个 IP。一旦所有 IP 使用一次,客户端就会再次从主机名解析 IP(但是 JVM 和操作系统都会缓存 DNS 名称查找)。如果设置为resolve_canonical_bootstrap_servers_only
,则将每个引导地址解析为规范名称列表。在引导阶段之后,其行为与 相同use_all_dns_ips
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
connections.max.idle.ms
在该配置指定的毫秒数后关闭空闲连接。
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.api.timeout.ms
指定客户端 API 的超时(以毫秒为单位)。此配置用作所有未指定timeout
参数的客户端操作的默认超时。
Type: |
---|
Default: |
Valid Values: |
Importance: |
enable.auto.commit
如果为 true,消费者的偏移量将在后台定期提交。
Type: |
---|
Default: |
Valid Values: |
Importance: |
exclude.internal.topic
是否应从订阅中排除与订阅模式匹配的内部主题。始终可以显式订阅内部主题。
Type: |
---|
Default: |
Valid Values: |
Importance: |
fetch.max.bytes
服务器应为获取请求返回的最大数据量。记录由消费者批量获取,如果获取的第一个非空分区中的第一个记录批次大于该值,仍然会返回该记录批次以确保消费者能够取得进展。因此,这不是绝对最大值。代理接受的最大记录批量大小是通过message.max.bytes
(代理配置)或max.message.bytes
(主题配置)定义的。请注意,消费者并行执行多个提取。
Type: |
---|
Default: |
Valid Values: |
Importance: |
group.instance.id
最终用户提供的消费者实例的唯一标识符。只允许非空字符串。如果设置,消费者将被视为静态成员,这意味着消费者组中任何时候只允许有一个具有此 ID 的实例。这可以与较大的会话超时结合使用,以避免由于暂时不可用(例如进程重新启动)而导致的组重新平衡。如果未设置,消费者将作为动态成员加入该组,这是传统行为。
Type: |
---|
Default: |
Valid Values: |
Importance: |
isolation.level
控制如何读取以事务方式写入的消息。如果设置为read_committed
,consumer.poll() 将仅返回已提交的事务消息。如果设置为read_uncommitted
(the default), consumer.poll() will return all messages, even transactional messages which have been aborted. Non-transactional messages will be returned unconditionally in either mode.
Messages will always be returned in offset order. Hence, in read_committed
mode, consumer.poll() will only return messages up to the last stable offset (LSO), which is the one less than the offset of the first open transaction. In particular any messages appearing after messages belonging to ongoing transactions will be withheld until the relevant transaction has been completed. As a result, read_committed
consumers will not be able to read up to the high watermark when there are in flight transactions.
Further, when in read_committed
the seekToEnd method will return the LSO
Type: |
---|
Default: |
Valid Values: |
Importance: |
max.poll.interval.ms
使用消费者组管理时,调用 poll() 之间的最大延迟。这对消费者在获取更多记录之前可以空闲的时间设置了上限。如果在此超时到期之前未调用 poll(),则消费者将被视为失败,并且组将重新平衡,以便将分区重新分配给另一个成员。对于使用非空的消费者group.instance.id
达到此超时,分区不会立即重新分配。相反,消费者将停止发送心跳,并且分区将在 过期后重新分配session.timeout.ms
。这反映了已关闭的静态消费者的行为。
Type: |
---|
Default: |
Valid Values: |
Importance: |
max.poll.records
单次调用 poll() 返回的最大记录数。请注意,这max.poll.records
不会影响底层的获取行为。消费者将缓存每个获取请求的记录,并从每次轮询中增量返回它们。
Type: |
---|
Default: |
Valid Values: |
Importance: |
partition.assignment.strategy
按优先顺序排序的类名称或类类型列表,支持分区分配策略,当使用组管理时,客户端将使用这些策略在消费者实例之间分配分区所有权。可用选项有:
org.apache.kafka.clients.consumer.RangeAssignor
:按主题分配分区。org.apache.kafka.clients.consumer.RoundRobinAssignor
:以循环方式将分区分配给消费者。org.apache.kafka.clients.consumer.StickyAssignor
:保证分配最大程度地平衡,同时保留尽可能多的现有分区分配。org.apache.kafka.clients.consumer.CooperativeStickyAssignor
:遵循相同的 StickyAssignor 逻辑,但允许合作重新平衡。
默认分配器是 [RangeAssignor, CooperativeStickyAssignor],默认情况下将使用 RangeAssignor,但允许升级到 CooperativeStickyAssignor,只需一次滚动弹跳即可从列表中删除 RangeAssignor。
实现该org.apache.kafka.clients.consumer.ConsumerPartitionAssignor
接口允许您插入自定义分配策略。
Type: |
---|
Default: |
Valid Values: |
Importance: |
receive.buffer.bytes
读取数据时使用的 TCP 接收缓冲区 (SO_RCVBUF) 的大小。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
request.timeout.ms
该配置控制客户端等待请求响应的最长时间。如果在超时之前未收到响应,则客户端将在必要时重新发送请求,或者在重试次数耗尽时使请求失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.client.callback.handler.class
实现 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理程序类的完全限定名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.jaas.config
SASL 连接的 JAAS 登录上下文参数采用 JAAS 配置文件使用的格式。JAAS 配置文件格式描述如下。该值的格式为:loginModuleClass controlFlag (optionName=optionValue)*;
。对于代理,配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,需要listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule;
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.service.name
Kafka 运行时使用的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 的配置中定义。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.callback.handler.class
实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理程序类的完全限定名称。对于代理,登录回调处理程序配置必须以侦听器前缀和小写的 SASL 机制名称为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.class
实现 Login 接口的类的完全限定名称。对于代理,登录配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.mechanism
用于客户端连接的 SASL 机制。这可以是安全提供者可用的任何机制。GSSAPI 是默认机制。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.url
OAuth/OIDC 提供者 URL,提供者的JWKS(JSON Web 密钥集)可以检索。URL 可以基于 HTTP(S) 或基于文件。如果 URL 基于 HTTP(S),则将通过代理启动时配置的 URL 从 OAuth/OIDC 提供程序检索 JWKS 数据。所有当时的密钥都将缓存在代理上以用于传入请求。如果收到 JWT 的身份验证请求,其中包含尚未在缓存中的“kid”标头声明值,则将根据需要再次查询 JWKS 端点。但是,代理会每隔 sasl.oauthbearer.jwks.endpoint.refresh.ms 毫秒轮询一次 URL,以便在收到包含这些密钥的任何 JWT 请求之前使用任何即将到来的密钥刷新缓存。如果 URL 是基于文件的,代理将在启动时从配置的位置加载 JWKS 文件。如果 JWT 包含 JWKS 文件中不存在的“kid”标头值,
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.token.endpoint.url
OAuth/OIDC 身份提供商的 URL。如果 URL 基于 HTTP(S),则它是颁发者的令牌端点 URL,将根据 sasl.jaas.config 中的配置发出登录请求。如果 URL 是基于文件的,则它指定一个包含 OAuth/OIDC 身份提供商颁发的访问令牌(JWT 序列化形式)的文件,用于授权。
Type: |
---|
Default: |
Valid Values: |
Importance: |
security.protocol
用于与broker通信的协议。有效值为:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL。
Type: |
---|
Default: |
Valid Values: |
Importance: |
send.buffer.bytes
发送数据时使用的 TCP 发送缓冲区 (SO_SNDBUF) 的大小。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
socket.connection.setup.timeout.max.ms
客户端等待建立套接字连接的最长时间。对于每个连续的连接失败,连接设置超时将呈指数增长,直至达到此最大值。为了避免连接风暴,将对超时应用 0.2 的随机化因子,从而产生比计算值低 20% 到高 20% 之间的随机范围。
Type: |
---|
Default: |
Valid Values: |
Importance: |
socket.connection.setup.timeout.ms
客户端等待建立套接字连接的时间。如果在超时之前未建立连接,客户端将关闭套接字通道。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.enabled.protocol
为 SSL 连接启用的协议列表。使用 Java 11 或更高版本运行时,默认值为“TLSv1.2、TLSv1.3”,否则为“TLSv1.2”。使用 Java 11 的默认值,如果客户端和服务器都支持 TLSv1.3,则首选 TLSv1.3,否则回退到 TLSv1.2(假设两者至少支持 TLSv1.2)。对于大多数情况,此默认值应该没问题。另请参阅“ssl.protocol”的配置文档。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.type
密钥存储文件的文件格式。这对于客户来说是可选的。默认 `ssl.engine.factory.class` 当前支持的值为 [JKS、PKCS12、PEM]。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.protocol
用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更高版本运行时,默认值为“TLSv1.3”,否则为“TLSv1.2”。该值对于大多数用例来说应该没问题。最新 JVM 中允许的值为“TLSv1.2”和“TLSv1.3”。较旧的 JVM 可能支持“TLS”、“TLSv1.1”、“SSL”、“SSLv2”和“SSLv3”,但由于已知的安全漏洞,不鼓励使用它们。使用此配置和“ssl.enabled.protocols”的默认值,如果服务器不支持“TLSv1.3”,客户端将降级到“TLSv1.2”。如果此配置设置为“TLSv1.2”,客户端将不会使用“TLSv1.3”,即使它是 ssl.enabled.protocols 中的值之一,并且服务器仅支持“TLSv1.3”。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.provider
用于 SSL 连接的安全提供程序的名称。默认值是 JVM 的默认安全提供程序。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.type
信任存储文件的文件格式。默认 `ssl.engine.factory.class` 当前支持的值为 [JKS、PKCS12、PEM]。
Type: |
---|
Default: |
Valid Values: |
Importance: |
auto.commit.interval.ms
enable.auto.commit
如果设置为,则消费者偏移量自动提交到 Kafka 的频率(以毫秒为单位)true
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
auto.jmx.reporter
已弃用。是否自动包含 JmxReporter,即使它没有在 中列出metric.reporters
。此配置将在 Kafka 4.0 中删除,用户应添加org.apache.kafka.common.metrics.JmxReporter
该配置metric.reporters
以启用 JmxReporter。
Type: |
---|
Default: |
Valid Values: |
Importance: |
check.crcs
自动检查消费记录的CRC32。这可确保消息不会发生在线或磁盘损坏。此检查会增加一些开销,因此在寻求极端性能的情况下可能会禁用它。
Type: |
---|
Default: |
Valid Values: |
Importance: |
client.id
发出请求时传递给服务器的 id 字符串。这样做的目的是通过允许在服务器端请求日志记录中包含逻辑应用程序名称,能够跟踪 IP/端口之外的请求源。
Type: |
---|
Default: |
Valid Values: |
Importance: |
client..rack
该客户端的机架标识符。这可以是指示该客户端物理位置的任何字符串值。它与代理配置“broker.rack”相对应
Type: |
---|
Default: |
Valid Values: |
Importance: |
fetch.max.wait.ms
如果没有足够的数据来立即满足 fetch.min.bytes 给出的要求,则服务器在应答提取请求之前将阻塞的最长时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
interceptor.classes
用作拦截器的类的列表。实现该org.apache.kafka.clients.consumer.ConsumerInterceptor
接口允许您拦截(并可能改变)消费者收到的记录。默认情况下,没有拦截器。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metadata.max.age.ms
即使我们没有看到任何分区领导层发生变化以主动发现任何新的代理或分区,我们也会强制刷新元数据,以毫秒为单位的时间段。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metric.reporters
用作指标报告者的类的列表。实现该org.apache.kafka.common.metrics.MetricsReporter
接口允许插入将收到新指标创建通知的类。JmxReporter 始终包含在内以注册 JMX 统计信息。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.num.samples
为计算指标而维护的样本数量。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.recording.level
指标的最高记录级别。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.sample.window.ms
计算指标样本的时间窗口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
reconnect.backoff.max.ms
重新连接到多次连接失败的代理时等待的最长时间(以毫秒为单位)。如果提供,每个主机的退避将在每次连续连接失败时呈指数增加,直至达到此最大值。计算退避增量后,添加 20% 的随机抖动以避免连接风暴。
Type: |
---|
Default: |
Valid Values: |
Importance: |
reconnect.backoff.ms
尝试重新连接到给定主机之前等待的基本时间量。这避免了在紧密循环中重复连接到主机。此退避适用于客户端与代理的所有连接尝试。
Type: |
---|
Default: |
Valid Values: |
Importance: |
retry.backoff.ms
尝试重试对给定主题分区的失败请求之前等待的时间。这避免了在某些故障场景下在紧密循环中重复发送请求。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.kinit.cmd
Kerberos kinit 命令路径。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.min.time.before.relogin
刷新尝试之间的登录线程睡眠时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.ticket.renew.jitter
添加到更新时间的随机抖动的百分比。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.ticket.renew.window.factor
登录线程将休眠,直到达到从上次刷新到票证到期的指定时间窗口因子,此时它将尝试更新票证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.connect.timeout.ms
外部身份验证提供程序连接超时的(可选)值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.read.timeout.ms
外部身份验证提供程序读取超时的(可选)值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.buffer.seconds
刷新凭证时在凭证过期前维持的缓冲时间量(以秒为单位)。如果刷新发生的时间比缓冲秒数更接近到期,则刷新将向上移动以维持尽可能多的缓冲时间。合法值介于 0 到 3600(1 小时)之间;如果未指定值,则使用默认值 300(5 分钟)。如果该值和 sasl.login.refresh.min.period.seconds 的总和超过凭证的剩余生命周期,则它们都会被忽略。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.min.period.seconds
登录刷新线程在刷新凭据之前等待的所需最短时间(以秒为单位)。合法值介于 0 到 900(15 分钟)之间;如果未指定值,则使用默认值 60(1 分钟)。如果该值和 sasl.login.refresh.buffer.seconds 的总和超过凭证的剩余生命周期,则它们都会被忽略。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.window.factor
登录刷新线程将休眠,直到达到相对于凭证生命周期的指定窗口因子,此时它将尝试刷新凭证。合法值介于 0.5 (50%) 和 1.0 (100%)(含)之间;如果未指定值,则使用默认值 0.8 (80%)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.window.jitter
相对于添加到登录刷新线程睡眠时间的凭证生命周期的最大随机抖动量。合法值介于 0 和 0.25 (25%) 之间(含);如果未指定值,则使用默认值 0.05 (5%)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.retry.backoff.max.ms
尝试登录外部身份验证提供程序之间的最长等待时间(可选)值(以毫秒为单位)。Login 使用指数退避算法,初始等待基于 sasl.login.retry.backoff.ms 设置,尝试之间的等待长度将加倍,直至达到 sasl.login.retry.backoff.max 指定的最大等待长度。毫秒设置。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.retry.backoff.ms
尝试登录外部身份验证提供程序之间的初始等待时间(可选)值(以毫秒为单位)。Login 使用指数退避算法,初始等待基于 sasl.login.retry.backoff.ms 设置,尝试之间的等待长度将加倍,直至达到 sasl.login.retry.backoff.max 指定的最大等待长度。毫秒设置。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.clock.skew.seconds
以秒为单位的(可选)值,以允许 OAuth/OIDC 身份提供商和代理的时间之间存在差异。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.expected.audience
代理的(可选)逗号分隔设置,用于验证 JWT 是否是为预期受众之一颁发的。将检查 JWT 是否有标准 OAuth“aud”声明,如果设置了此值,代理将匹配 JWT 的“aud”声明中的值,以查看是否存在完全匹配。如果不匹配,代理将拒绝 JWT,身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.expected.issuer
代理用于验证 JWT 是否由预期发行者创建的(可选)设置。将检查 JWT 是否有标准 OAuth“iss”声明,如果设置了该值,代理会将其与 JWT 的“iss”声明中的内容完全匹配。如果不匹配,代理将拒绝 JWT,身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.refresh.ms
代理在刷新其 JWKS(JSON Web 密钥集)缓存之间等待的(可选)值(以毫秒为单位),该缓存包含用于验证 JWT 签名的密钥。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms
尝试从外部身份验证提供程序检索 JWKS(JSON Web 密钥集)之间的最长等待时间(可选)值(以毫秒为单位)。JWKS 检索使用指数退避算法,并根据 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置进行初始等待,并且两次尝试之间的等待长度将加倍,直至达到 sasl.oauthbearer.jwks 指定的最大等待长度.endpoint.retry.backoff.max.ms 设置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.retry.backoff.ms
来自外部身份验证提供程序的 JWKS(JSON Web 密钥集)检索尝试之间的初始等待时间(可选)值(以毫秒为单位)。JWKS 检索使用指数退避算法,并根据 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置进行初始等待,并且两次尝试之间的等待长度将加倍,直至达到 sasl.oauthbearer.jwks 指定的最大等待长度.endpoint.retry.backoff.max.ms 设置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.scope.claim.name
该范围的 OAuth 声明通常被命名为“scope”,但如果 OAuth/OIDC 提供程序对该声明使用不同的名称,则此(可选)设置可以为 JWT 负载声明中包含的范围提供不同的名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.sub.claim.name
主题的 OAuth 声明通常命名为“sub”,但如果 OAuth/OIDC 提供程序对该声明使用不同的名称,则此(可选)设置可以为 JWT 负载声明中包含的主题提供不同的名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
security.providers
可配置创建者类的列表,每个类返回一个实现安全算法的提供者。这些类应该实现该org.apache.kafka.common.security.auth.SecurityProviderCreator
接口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.cipher.suites
密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下,支持所有可用的密码套件。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.endpoint.identification.algorithm
使用服务器证书验证服务器主机名的端点识别算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.engine.factory.class
org.apache.kafka.common.security.auth.SslEngineFactory 类型的类提供 SSLEngine 对象。默认值为 org.apache.kafka.common.security.ssl.DefaultSslEngineFactory
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keymanager.algorithm
密钥管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的密钥管理器工厂算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.secure.random.implementation
用于 SSL 加密操作的 SecureRandom PRNG 实现。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.trustmanager.algorithm
信任管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的信任管理器工厂算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
3.5 Kafka连接配置
以下是 Kafka Connect 框架的配置。
config.storage.topic
存储连接器配置的 Kafka 主题的名称
Type: |
---|
Default: |
Valid Values: |
Importance: |
group.id
标识该工作线程所属的 Connect 集群组的唯一字符串。
Type: |
---|
Default: |
Valid Values: |
Importance: |
key.converter
Converter 类用于在 Kafka Connect 格式和写入 Kafka 的序列化形式之间进行转换。这控制写入 Kafka 或从 Kafka 读取的消息中键的格式,并且由于它独立于连接器,因此允许任何连接器使用任何序列化格式。常见格式的示例包括 JSON 和 Avro。
Type: |
---|
Default: |
Valid Values: |
Importance: |
offsets.storage.topic
存储源连接器偏移量的 Kafka 主题的名称
Type: |
---|
Default: |
Valid Values: |
Importance: |
status.storage.topic
存储连接器和任务状态的 Kafka 主题的名称
Type: |
---|
Default: |
Valid Values: |
Importance: |
value.converter
Converter 类用于在 Kafka Connect 格式和写入 Kafka 的序列化形式之间进行转换。这控制写入 Kafka 或从 Kafka 读取的消息中的值的格式,并且由于它独立于连接器,因此允许任何连接器使用任何序列化格式。常见格式的示例包括 JSON 和 Avro。
Type: |
---|
Default: |
Valid Values: |
Importance: |
bootstrap.servers
用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用所有服务器,无论此处指定哪些服务器进行引导 - 该列表仅影响用于发现全套服务器的初始主机。该列表应采用以下形式host1:port1,host2:port2,...
。由于这些服务器仅用于初始连接以发现完整的集群成员资格(可能会动态更改),因此此列表不需要包含完整的服务器集(不过,您可能需要多个服务器,以防服务器停机) 。
Type: |
---|
Default: |
Valid Values: |
Importance: |
exactly.once.source.support
是否通过使用事务写入源记录及其源偏移量,以及在启动新任务之前主动隔离旧任务代,来为集群中的源连接器启用一次性支持。
要在新集群上启用一次性源支持,请将此属性设置为“已启用”。要在现有集群上启用支持,请首先在集群中的每个工作线程上设置为“准备”,然后设置为“启用”。滚动升级可用于这两种更改。有关此功能的更多信息,请参阅一次性源支持文档。
Type: |
---|
Default: |
Valid Values: |
Importance: |
heartbeat.interval.ms
使用 Kafka 的组管理工具时,向组协调器发出心跳的预期时间间隔。心跳用于确保工作人员的会话保持活动状态,并在新成员加入或离开组时促进重新平衡。该值必须设置为低于session.timeout.ms
,但通常不应高于该值的 1/3。它可以调整得更低,以控制正常重新平衡的预期时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
rebalance.timeout.ms
重新平衡开始后,每个工作人员加入该组的最大允许时间。这基本上是对所有任务刷新任何挂起数据和提交偏移量所需的时间的限制。如果超过超时,那么该worker将从组中删除,这将导致偏移量提交失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
session.timeout.ms
用于检测工作器故障的超时时间。工作线程定期发送心跳以向代理表明其活跃度。如果在此会话超时到期之前代理没有收到心跳,则代理将从组中删除该工作线程并启动重新平衡。请注意,该值必须在代理配置中group.min.session.timeout.ms
和所配置的允许范围内group.max.session.timeout.ms
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.key.password
密钥存储文件中私钥的密码或“ssl.keystore.key”中指定的 PEM 密钥的密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.certificate.chain
证书链采用“ssl.keystore.type”指定的格式。默认 SSL 引擎工厂仅支持带有 X.509 证书列表的 PEM 格式
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.key
私钥采用“ssl.keystore.type”指定的格式。默认 SSL 引擎工厂仅支持带有 PKCS#8 密钥的 PEM 格式。如果密钥已加密,则必须使用“ssl.key.password”指定密钥密码
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.location
密钥存储文件的位置。这对客户端来说是可选的,可用于客户端的双向身份验证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.password
密钥存储文件的存储密码。这对于客户端来说是可选的,并且仅在配置了“ssl.keystore.location”时才需要。PEM 格式不支持密钥存储密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.certificate
采用“ssl.truststore.type”指定格式的受信任证书。默认 SSL 引擎工厂仅支持带有 X.509 证书的 PEM 格式。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.location
信任存储文件的位置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.password
信任存储文件的密码。如果未设置密码,仍将使用配置的信任存储文件,但禁用完整性检查。PEM 格式不支持信任存储密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
client.dns.lookup
控制客户端如何使用 DNS 查找。如果设置为use_all_dns_ips
,则按顺序连接每个返回的 IP 地址,直到建立成功连接。断开连接后,将使用下一个 IP。一旦所有 IP 使用一次,客户端就会再次从主机名解析 IP(但是 JVM 和操作系统都会缓存 DNS 名称查找)。如果设置为resolve_canonical_bootstrap_servers_only
,则将每个引导地址解析为规范名称列表。在引导阶段之后,其行为与 相同use_all_dns_ips
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
connections.max.idle.ms
在该配置指定的毫秒数后关闭空闲连接。
Type: |
---|
Default: |
Valid Values: |
Importance: |
connector.client.config.override.policy
的实现的类名或别名ConnectorClientConfigOverridePolicy
。定义连接器可以覆盖哪些客户端配置。默认实现是“All”,这意味着连接器配置可以覆盖所有客户端属性。框架中的其他可能的策略包括“None”(禁止连接器覆盖客户端属性)和“Principal”(允许连接器仅覆盖客户端主体)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
receive.buffer.bytes
读取数据时使用的 TCP 接收缓冲区 (SO_RCVBUF) 的大小。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
request.timeout.ms
该配置控制客户端等待请求响应的最长时间。如果在超时之前未收到响应,则客户端将在必要时重新发送请求,或者在重试次数耗尽时使请求失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.client.callback.handler.class
实现 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理程序类的完全限定名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.jaas.config
SASL 连接的 JAAS 登录上下文参数采用 JAAS 配置文件使用的格式。JAAS 配置文件格式描述如下。该值的格式为:loginModuleClass controlFlag (optionName=optionValue)*;
。对于代理,配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,需要listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule;
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.service.name
Kafka 运行时使用的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 的配置中定义。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.callback.handler.class
实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理程序类的完全限定名称。对于代理,登录回调处理程序配置必须以侦听器前缀和小写的 SASL 机制名称为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.class
实现 Login 接口的类的完全限定名称。对于代理,登录配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.mechanism
用于客户端连接的 SASL 机制。这可以是安全提供者可用的任何机制。GSSAPI 是默认机制。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.url
OAuth/OIDC 提供者 URL,提供者的JWKS(JSON Web 密钥集)可以检索。URL 可以基于 HTTP(S) 或基于文件。如果 URL 基于 HTTP(S),则将通过代理启动时配置的 URL 从 OAuth/OIDC 提供程序检索 JWKS 数据。所有当时的密钥都将缓存在代理上以用于传入请求。如果收到 JWT 的身份验证请求,其中包含尚未在缓存中的“kid”标头声明值,则将根据需要再次查询 JWKS 端点。但是,代理会每隔 sasl.oauthbearer.jwks.endpoint.refresh.ms 毫秒轮询一次 URL,以便在收到包含这些密钥的任何 JWT 请求之前使用任何即将到来的密钥刷新缓存。如果 URL 是基于文件的,代理将在启动时从配置的位置加载 JWKS 文件。如果 JWT 包含 JWKS 文件中不存在的“kid”标头值,
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.token.endpoint.url
OAuth/OIDC 身份提供商的 URL。如果 URL 基于 HTTP(S),则它是颁发者的令牌端点 URL,将根据 sasl.jaas.config 中的配置发出登录请求。如果 URL 是基于文件的,则它指定一个包含 OAuth/OIDC 身份提供商颁发的访问令牌(JWT 序列化形式)的文件,用于授权。
Type: |
---|
Default: |
Valid Values: |
Importance: |
security.protocol
用于与broker通信的协议。有效值为:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL。
Type: |
---|
Default: |
Valid Values: |
Importance: |
send.buffer.bytes
发送数据时使用的 TCP 发送缓冲区 (SO_SNDBUF) 的大小。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.enabled.protocol
为 SSL 连接启用的协议列表。使用 Java 11 或更高版本运行时,默认值为“TLSv1.2、TLSv1.3”,否则为“TLSv1.2”。使用 Java 11 的默认值,如果客户端和服务器都支持 TLSv1.3,则首选 TLSv1.3,否则回退到 TLSv1.2(假设两者至少支持 TLSv1.2)。对于大多数情况,此默认值应该没问题。另请参阅“ssl.protocol”的配置文档。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.type
密钥存储文件的文件格式。这对于客户来说是可选的。默认 `ssl.engine.factory.class` 当前支持的值为 [JKS、PKCS12、PEM]。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.protocol
用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更高版本运行时,默认值为“TLSv1.3”,否则为“TLSv1.2”。该值对于大多数用例来说应该没问题。最新 JVM 中允许的值为“TLSv1.2”和“TLSv1.3”。较旧的 JVM 可能支持“TLS”、“TLSv1.1”、“SSL”、“SSLv2”和“SSLv3”,但由于已知的安全漏洞,不鼓励使用它们。使用此配置和“ssl.enabled.protocols”的默认值,如果服务器不支持“TLSv1.3”,客户端将降级到“TLSv1.2”。如果此配置设置为“TLSv1.2”,客户端将不会使用“TLSv1.3”,即使它是 ssl.enabled.protocols 中的值之一,并且服务器仅支持“TLSv1.3”。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.provider
用于 SSL 连接的安全提供程序的名称。默认值是 JVM 的默认安全提供程序。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.type
信任存储文件的文件格式。默认 `ssl.engine.factory.class` 当前支持的值为 [JKS、PKCS12、PEM]。
Type: |
---|
Default: |
Valid Values: |
Importance: |
worker.sync.timeout.ms
当工作人员与其他工作人员不同步并且需要重新同步配置时,请在放弃、离开组之前等待一段时间,并在重新加入之前等待一段退避期。
Type: |
---|
Default: |
Valid Values: |
Importance: |
worker.unsync.backoff.ms
当工作线程与其他工作线程不同步并且无法在worker.sync.timeout.ms内赶上时,请在重新加入之前离开Connect集群这么长时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
access.control.allow.methods
通过设置 Access-Control-Allow-Methods 标头来设置跨源请求支持的方法。Access-Control-Allow-Methods 标头的默认值允许 GET、POST 和 HEAD 的跨源请求。
Type: |
---|
Default: |
Valid Values: |
Importance: |
access.control.allow.origin
为 REST API 请求设置 Access-Control-Allow-Origin 标头的值。要启用跨源访问,请将其设置为应允许访问 API 的应用程序的域,或“*”以允许来自任何域的访问领域。默认值仅允许从 REST API 的域进行访问。
Type: |
---|
Default: |
Valid Values: |
Importance: |
admin.listeners
管理 REST API 将侦听的以逗号分隔的 URI 列表。支持的协议是 HTTP 和 HTTPS。空字符串将禁用此功能。默认行为是使用常规侦听器(由“侦听器”属性指定)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
auto.jmx.reporter
已弃用。是否自动包含 JmxReporter,即使它没有在 中列出metric.reporters
。此配置将在 Kafka 4.0 中删除,用户应添加org.apache.kafka.common.metrics.JmxReporter
该配置metric.reporters
以启用 JmxReporter。
Type: |
---|
Default: |
Valid Values: |
Importance: |
client.id
发出请求时传递给服务器的 id 字符串。这样做的目的是通过允许在服务器端请求日志记录中包含逻辑应用程序名称,能够跟踪 IP/端口之外的请求源。
Type: |
---|
Default: |
Valid Values: |
Importance: |
config.providers
以逗号分隔的ConfigProvider
类名称,按指定的顺序加载和使用。实现该接口 ConfigProvider
允许您替换连接器配置中的变量引用,例如外部化机密。
Type: |
---|
Default: |
Valid Values: |
Importance: |
config.storage.replication.factor
创建配置存储主题时使用的复制因子
Type: |
---|
Default: |
Valid Values: |
Importance: |
connect.protocol
Kafka Connect 协议的兼容模式
Type: |
---|
Default: |
Valid Values: |
Importance: |
header.converter
HeaderConverter 类用于在 Kafka Connect 格式和写入 Kafka 的序列化形式之间进行转换。这控制写入 Kafka 或从 Kafka 读取的消息中标头值的格式,并且由于它独立于连接器,因此允许任何连接器使用任何序列化格式。常见格式的示例包括 JSON 和 Avro。默认情况下,SimpleHeaderConverter 用于将标头值序列化为字符串,并通过推断架构来反序列化它们。
Type: |
---|
Default: |
Valid Values: |
Importance: |
inter.worker.key.generation.algorithm
用于生成内部请求密钥的算法。算法“HmacSHA256”将在支持该算法的 JVM 上默认使用;在其他 JVM 上,不使用默认值,并且必须在工作配置中手动指定此属性的值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
inter.worker.key.size
用于签署内部请求的密钥的大小(以位为单位)。如果为空,则将使用密钥生成算法的默认密钥大小。
Type: |
---|
Default: |
Valid Values: |
Importance: |
inter.worker.key.ttl.ms
用于内部请求验证的生成会话密钥的 TTL(以毫秒为单位)
Type: |
---|
Default: |
Valid Values: |
Importance: |
inter.worker.signature.algorithm
用于签署内部请求的算法“inter.worker.signature.algorithm”算法将在支持该算法的 JVM 上默认使用;在其他 JVM 上,不使用默认值,并且必须在工作配置中手动指定此属性的值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
inter.worker.verification.algorithms
用于验证内部请求的允许算法列表,其中必须包括用于 inter.worker.signature.algorithm 属性的算法。算法“[HmacSHA256]”将用作提供它们的 JVM 的默认值;在其他 JVM 上,不使用默认值,并且必须在工作配置中手动指定此属性的值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
listeners
REST API 将侦听的以逗号分隔的 URI 列表。支持的协议是 HTTP 和 HTTPS。
将主机名指定为 0.0.0.0 以绑定到所有接口。
将主机名留空以绑定到默认接口。
合法侦听器列表示例:HTTP://myhost:8083、HTTPS://myhost:8084
Type: |
---|
Default: |
Valid Values: |
Importance: |
metadata.max.age.ms
即使我们没有看到任何分区领导层发生变化以主动发现任何新的代理或分区,我们也会强制刷新元数据,以毫秒为单位的时间段。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metric.reporters
用作指标报告者的类的列表。实现该org.apache.kafka.common.metrics.MetricsReporter
接口允许插入将收到新指标创建通知的类。JmxReporter 始终包含在内以注册 JMX 统计信息。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.num.samples
为计算指标而维护的样本数量。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.recording.level
指标的最高记录级别。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.sample.window.ms
计算指标样本的时间窗口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
offset.flush.interval.ms
尝试提交任务偏移量的时间间隔。
Type: |
---|
Default: |
Valid Values: |
Importance: |
offset.flush.timeout.ms
在取消进程并恢复要在未来尝试中提交的偏移数据之前,等待记录刷新并将分区偏移数据提交到偏移存储的最大毫秒数。此属性对于以一次性支持运行的源连接器没有影响。
Type: |
---|
Default: |
Valid Values: |
Importance: |
offset.storage.partitions
创建offset存储topic时使用的分区数量
Type: |
---|
Default: |
Valid Values: |
Importance: |
offset.storage.replication.factor
创建偏移存储主题时使用的复制因子
Type: |
---|
Default: |
Valid Values: |
Importance: |
plugin.path
由逗号 (,) 分隔的包含插件(连接器、转换器、转换)的路径列表。该列表应由顶级目录组成,其中包括以下任意组合:
a) 直接包含带有插件及其依赖项的 jar 的目录
b) 带有插件及其依赖项的 uber-jars
c) 立即包含插件类及其依赖项的包目录结构的目录依赖项
注意:将遵循符号链接来发现依赖项或插件。
示例:plugin.path=/usr/local/share/java,/usr/local/share/kafka/plugins,/opt/connectors
不要在此属性中使用配置提供程序变量,因为原始路径由工作程序的扫描仪使用在配置提供程序初始化并用于替换变量之前。
Type: |
---|
Default: |
Valid Values: |
Importance: |
reconnect.backoff.max.ms
重新连接到多次连接失败的代理时等待的最长时间(以毫秒为单位)。如果提供,每个主机的退避将在每次连续连接失败时呈指数增加,直至达到此最大值。计算退避增量后,添加 20% 的随机抖动以避免连接风暴。
Type: |
---|
Default: |
Valid Values: |
Importance: |
reconnect.backoff.ms
尝试重新连接到给定主机之前等待的基本时间量。这避免了在紧密循环中重复连接到主机。此退避适用于客户端与代理的所有连接尝试。
Type: |
---|
Default: |
Valid Values: |
Importance: |
response.http.headers.config
REST API HTTP 响应标头的规则
Type: |
---|
Default: |
Valid Values: |
Importance: |
rest.advertised.host.name
如果设置了此项,则这就是将提供给其他工作人员进行连接的主机名。
Type: |
---|
Default: |
Valid Values: |
Importance: |
rest.advertised.listener
设置将提供给其他工作人员使用的广告侦听器(HTTP 或 HTTPS)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
rest.advertised.port
如果设置了此端口,则该端口将提供给其他工作人员进行连接。
Type: |
---|
Default: |
Valid Values: |
Importance: |
rest.extension.class
以逗号分隔的ConnectRestExtension
类名称,按指定的顺序加载和调用。实现该接口 ConnectRestExtension
允许您将用户定义的资源(例如过滤器)注入 Connect 的 REST API。通常用于添加自定义功能,例如日志记录、安全性等。
Type: |
---|
Default: |
Valid Values: |
Importance: |
retry.backoff.ms
尝试重试对给定主题分区的失败请求之前等待的时间。这避免了在某些故障场景下在紧密循环中重复发送请求。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.kinit.cmd
Kerberos kinit 命令路径。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.min.time.before.relogin
刷新尝试之间的登录线程睡眠时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.ticket.renew.jitter
添加到更新时间的随机抖动的百分比。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.ticket.renew.window.factor
登录线程将休眠,直到达到从上次刷新到票证到期的指定时间窗口因子,此时它将尝试更新票证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.connect.timeout.ms
外部身份验证提供程序连接超时的(可选)值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.read.timeout.ms
外部身份验证提供程序读取超时的(可选)值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.buffer.seconds
刷新凭证时在凭证过期前维持的缓冲时间量(以秒为单位)。如果刷新发生的时间比缓冲秒数更接近到期,则刷新将向上移动以维持尽可能多的缓冲时间。合法值介于 0 到 3600(1 小时)之间;如果未指定值,则使用默认值 300(5 分钟)。如果该值和 sasl.login.refresh.min.period.seconds 的总和超过凭证的剩余生命周期,则它们都会被忽略。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.min.period.seconds
登录刷新线程在刷新凭据之前等待的所需最短时间(以秒为单位)。合法值介于 0 到 900(15 分钟)之间;如果未指定值,则使用默认值 60(1 分钟)。如果该值和 sasl.login.refresh.buffer.seconds 的总和超过凭证的剩余生命周期,则它们都会被忽略。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.window.factor
登录刷新线程将休眠,直到达到相对于凭证生命周期的指定窗口因子,此时它将尝试刷新凭证。合法值介于 0.5 (50%) 和 1.0 (100%)(含)之间;如果未指定值,则使用默认值 0.8 (80%)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.window.jitter
相对于添加到登录刷新线程睡眠时间的凭证生命周期的最大随机抖动量。合法值介于 0 和 0.25 (25%) 之间(含);如果未指定值,则使用默认值 0.05 (5%)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.retry.backoff.max.ms
尝试登录外部身份验证提供程序之间的最长等待时间(可选)值(以毫秒为单位)。Login 使用指数退避算法,初始等待基于 sasl.login.retry.backoff.ms 设置,尝试之间的等待长度将加倍,直至达到 sasl.login.retry.backoff.max 指定的最大等待长度。毫秒设置。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.retry.backoff.ms
尝试登录外部身份验证提供程序之间的初始等待时间(可选)值(以毫秒为单位)。Login 使用指数退避算法,初始等待基于 sasl.login.retry.backoff.ms 设置,尝试之间的等待长度将加倍,直至达到 sasl.login.retry.backoff.max 指定的最大等待长度。毫秒设置。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.clock.skew.seconds
以秒为单位的(可选)值,以允许 OAuth/OIDC 身份提供商和代理的时间之间存在差异。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.expected.audience
代理的(可选)逗号分隔设置,用于验证 JWT 是否是为预期受众之一颁发的。将检查 JWT 是否有标准 OAuth“aud”声明,如果设置了此值,代理将匹配 JWT 的“aud”声明中的值,以查看是否存在完全匹配。如果不匹配,代理将拒绝 JWT,身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.expected.issuer
代理用于验证 JWT 是否由预期发行者创建的(可选)设置。将检查 JWT 是否有标准 OAuth“iss”声明,如果设置了该值,代理会将其与 JWT 的“iss”声明中的内容完全匹配。如果不匹配,代理将拒绝 JWT,身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.refresh.ms
代理在刷新其 JWKS(JSON Web 密钥集)缓存之间等待的(可选)值(以毫秒为单位),该缓存包含用于验证 JWT 签名的密钥。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms
尝试从外部身份验证提供程序检索 JWKS(JSON Web 密钥集)之间的最长等待时间(可选)值(以毫秒为单位)。JWKS 检索使用指数退避算法,并根据 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置进行初始等待,并且两次尝试之间的等待长度将加倍,直至达到 sasl.oauthbearer.jwks 指定的最大等待长度.endpoint.retry.backoff.max.ms 设置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.retry.backoff.ms
来自外部身份验证提供程序的 JWKS(JSON Web 密钥集)检索尝试之间的初始等待时间(可选)值(以毫秒为单位)。JWKS 检索使用指数退避算法,并根据 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置进行初始等待,并且两次尝试之间的等待长度将加倍,直至达到 sasl.oauthbearer.jwks 指定的最大等待长度.endpoint.retry.backoff.max.ms 设置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.scope.claim.name
该范围的 OAuth 声明通常被命名为“scope”,但如果 OAuth/OIDC 提供程序对该声明使用不同的名称,则此(可选)设置可以为 JWT 负载声明中包含的范围提供不同的名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.sub.claim.name
主题的 OAuth 声明通常命名为“sub”,但如果 OAuth/OIDC 提供程序对该声明使用不同的名称,则此(可选)设置可以为 JWT 负载声明中包含的主题提供不同的名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
scheduled.rebalance.max.delay.ms
为等待一名或多名离职工作人员返回而安排的最大延迟,然后再重新平衡其连接器和任务并将其重新分配给组。在此期间,离职员工的连接器和任务仍未分配
Type: |
---|
Default: |
Valid Values: |
Importance: |
socket.connection.setup.timeout.max.ms
客户端等待建立套接字连接的最长时间。对于每个连续的连接失败,连接设置超时将呈指数增长,直至达到此最大值。为了避免连接风暴,将对超时应用 0.2 的随机化因子,从而产生比计算值低 20% 到高 20% 之间的随机范围。
Type: |
---|
Default: |
Valid Values: |
Importance: |
socket.connection.setup.timeout.ms
客户端等待建立套接字连接的时间。如果在超时之前未建立连接,客户端将关闭套接字通道。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.cipher.suites
密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下,支持所有可用的密码套件。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.client.auth
配置 kafka 代理来请求客户端身份验证。以下设置是常见的:
ssl.client.auth=required
如果设置为必需,则需要客户端身份验证。ssl.client.auth=requested
这意味着客户端身份验证是可选的。与必需的不同,如果设置了此选项,客户端可以选择不提供有关其自身的身份验证信息ssl.client.auth=none
这意味着不需要客户端身份验证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.endpoint.identification.algorithm
使用服务器证书验证服务器主机名的端点识别算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.engine.factory.class
org.apache.kafka.common.security.auth.SslEngineFactory 类型的类提供 SSLEngine 对象。默认值为 org.apache.kafka.common.security.ssl.DefaultSslEngineFactory
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keymanager.algorithm
密钥管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的密钥管理器工厂算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.secure.random.implementation
用于 SSL 加密操作的 SecureRandom PRNG 实现。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.trustmanager.algorithm
信任管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的信任管理器工厂算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
status.storage.partitions
创建状态存储topic时使用的分区数量
Type: |
---|
Default: |
Valid Values: |
Importance: |
status.storage.replication.factor
创建状态存储主题时使用的复制因子
Type: |
---|
Default: |
Valid Values: |
Importance: |
task.shutdown.graceful.timeout.ms
等待任务正常关闭的时间。这是总时间,而不是每个任务的时间。所有任务都已触发关闭,然后按顺序等待。
Type: |
---|
Default: |
Valid Values: |
Importance: |
topic.create.enable
当源连接器配置了“topic.creation.”属性时,是否允许自动创建源连接器使用的主题。每个任务都将使用管理客户端来创建其主题,并且不会依赖 Kafka 代理自动创建主题。
Type: |
---|
Default: |
Valid Values: |
Importance: |
topic.tracking.allow.reset
如果设置为 true,则允许用户请求重置每个连接器的活动主题集。
Type: |
---|
Default: |
Valid Values: |
Importance: |
topic.tracking.enable
启用在运行时跟踪每个连接器的活动主题集。
Type: |
---|
Default: |
Valid Values: |
Importance: |
3.5.1 源连接器配置
以下是源连接器的配置。
name
用于此连接器的全局唯一名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
connector.class
此连接器的类的名称或别名。必须是 org.apache.kafka.connect.connector.Connector 的子类。如果连接器是org.apache.kafka.connect.file.FileStreamSinkConnector,您可以指定这个全名,或者使用“FileStreamSink”或“FileStreamSinkConnector”使配置更短一些
Type: |
---|
Default: |
Valid Values: |
Importance: |
tasks.max
用于此连接器的最大任务数。
Type: |
---|
Default: |
Valid Values: |
Importance: |
key.converter
Converter 类用于在 Kafka Connect 格式和写入 Kafka 的序列化形式之间进行转换。这控制写入 Kafka 或从 Kafka 读取的消息中键的格式,并且由于它独立于连接器,因此允许任何连接器使用任何序列化格式。常见格式的示例包括 JSON 和 Avro。
Type: |
---|
Default: |
Valid Values: |
Importance: |
value.converter
Converter 类用于在 Kafka Connect 格式和写入 Kafka 的序列化形式之间进行转换。这控制写入 Kafka 或从 Kafka 读取的消息中的值的格式,并且由于它独立于连接器,因此允许任何连接器使用任何序列化格式。常见格式的示例包括 JSON 和 Avro。
Type: |
---|
Default: |
Valid Values: |
Importance: |
header.converter
HeaderConverter 类用于在 Kafka Connect 格式和写入 Kafka 的序列化形式之间进行转换。这控制写入 Kafka 或从 Kafka 读取的消息中标头值的格式,并且由于它独立于连接器,因此允许任何连接器使用任何序列化格式。常见格式的示例包括 JSON 和 Avro。默认情况下,SimpleHeaderConverter 用于将标头值序列化为字符串,并通过推断架构来反序列化它们。
Type: |
---|
Default: |
Valid Values: |
Importance: |
config.action.reload
当外部配置提供程序的更改导致连接器的配置属性发生更改时,Connect 应对连接器执行的操作。值“none”表示 Connect 将不执行任何操作。“restart”值表示 Connect 应使用更新的配置属性重新启动/重新加载连接器。如果外部配置提供程序指示配置值将来会过期,则实际上可能会在将来安排重新启动。
Type: |
---|
Default: |
Valid Values: |
Importance: |
transforms
应用于记录的转换的别名。
Type: |
---|
Default: |
Valid Values: |
Importance: |
predicates
转换使用的谓词的别名。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.retry.timeout
重新尝试失败操作的最大持续时间(以毫秒为单位)。默认值为 0,这意味着不会尝试重试。使用 -1 进行无限重试。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.retry.delay.max.ms
连续重试之间的最大持续时间(以毫秒为单位)。一旦达到此限制,抖动就会添加到延迟中,以防止雷群问题。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.tolerance
连接器操作期间容忍错误的行为。“none”是默认值,表示任何错误都将导致连接器任务立即失败;“all”更改行为以跳过有问题的记录。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.log.enable
如果为 true,则将每个错误以及失败操作的详细信息和有问题的记录写入 Connect 应用程序日志。默认情况下此值为“false”,因此仅报告不能容忍的错误。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.log.include.messages
是否在日志中包含导致失败的连接记录。对于接收器记录,将记录主题、分区、偏移量和时间戳。对于源记录,将记录键和值(及其模式)、所有标头以及时间戳、Kafka 主题、Kafka 分区、源分区和源偏移量。默认情况下这是“false”,这将阻止记录键、值和标头写入日志文件。
Type: |
---|
Default: |
Valid Values: |
Importance: |
topic.creation.groups
由源连接器创建的主题配置组
Type: |
---|
Default: |
Valid Values: |
Importance: |
exactly.once.support
允许的值是请求的、必需的。如果设置为“必需”,则强制对连接器进行预检,以确保它可以使用给定的配置提供一次性语义。某些连接器可能能够提供一次性语义,但不会向 Connect 发出信号表明它们支持此功能;在这种情况下,在创建连接器之前应仔细查阅连接器的文档,并且该属性的值应设置为“请求”。此外,如果该值设置为“必需”,但执行预检验证的工作线程没有为源连接器启用exactly.once.support,则创建或验证连接器的请求将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
transaction.boundary
允许的值为:轮询、间隔、连接器。如果设置为“轮询”,则将为该连接器中的每个任务提供给 Connect 的每批记录启动并提交一个新的生产者事务。如果设置为“连接器”,则依赖于连接器定义的事务边界;请注意,并非所有连接器都能够定义自己的事务边界,在这种情况下,尝试使用此值实例化连接器将会失败。最后,如果设置为“interval”,则仅在用户定义的时间间隔过去后提交事务。
Type: |
---|
Default: |
Valid Values: |
Importance: |
transaction.boundary.interval.ms
如果“transaction.boundary”设置为“interval”,则确定连接器任务提交生产者事务的时间间隔。如果未设置,则默认为工作线程级别“offset.flush.interval.ms”属性的值。如果指定了不同的 transaction.boundary 则没有任何影响。
Type: |
---|
Default: |
Valid Values: |
Importance: |
offsets.storage.topic
用于此连接器的单独偏移主题的名称。如果为空或未指定,则将使用工作人员的全局偏移量主题名称。如果指定,如果该连接器的目标 Kafka 集群上尚不存在偏移量主题,则将创建该偏移量主题(如果连接器生产者的 bootstrap.servers 属性已被设置,则该偏移量主题可能与用于工作线程全局偏移量主题的主题不同)从工人的覆盖)。仅适用于分布式模式;在独立模式下,设置该属性将不起作用。
Type: |
---|
Default: |
Valid Values: |
Importance: |
3.5.2 接收器连接器配置
以下是接收器连接器的配置。
name
用于此连接器的全局唯一名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
connector.class
此连接器的类的名称或别名。必须是 org.apache.kafka.connect.connector.Connector 的子类。如果连接器是org.apache.kafka.connect.file.FileStreamSinkConnector,您可以指定这个全名,或者使用“FileStreamSink”或“FileStreamSinkConnector”使配置更短一些
Type: |
---|
Default: |
Valid Values: |
Importance: |
tasks.max
用于此连接器的最大任务数。
Type: |
---|
Default: |
Valid Values: |
Importance: |
topics
要使用的主题列表,以逗号分隔
Type: |
---|
Default: |
Valid Values: |
Importance: |
topics.regex
提供要使用的主题的正则表达式。在底层,正则表达式被编译为java.util.regex.Pattern
. 仅应指定 topic 或 topic.regex 之一。
Type: |
---|
Default: |
Valid Values: |
Importance: |
key.converter
Converter 类用于在 Kafka Connect 格式和写入 Kafka 的序列化形式之间进行转换。这控制写入 Kafka 或从 Kafka 读取的消息中键的格式,并且由于它独立于连接器,因此允许任何连接器使用任何序列化格式。常见格式的示例包括 JSON 和 Avro。
Type: |
---|
Default: |
Valid Values: |
Importance: |
value.converter
Converter 类用于在 Kafka Connect 格式和写入 Kafka 的序列化形式之间进行转换。这控制写入 Kafka 或从 Kafka 读取的消息中的值的格式,并且由于它独立于连接器,因此允许任何连接器使用任何序列化格式。常见格式的示例包括 JSON 和 Avro。
Type: |
---|
Default: |
Valid Values: |
Importance: |
header.converter
HeaderConverter 类用于在 Kafka Connect 格式和写入 Kafka 的序列化形式之间进行转换。这控制写入 Kafka 或从 Kafka 读取的消息中标头值的格式,并且由于它独立于连接器,因此允许任何连接器使用任何序列化格式。常见格式的示例包括 JSON 和 Avro。默认情况下,SimpleHeaderConverter 用于将标头值序列化为字符串,并通过推断架构来反序列化它们。
Type: |
---|
Default: |
Valid Values: |
Importance: |
config.action.reload
当外部配置提供程序的更改导致连接器的配置属性发生更改时,Connect 应对连接器执行的操作。值“none”表示 Connect 将不执行任何操作。“restart”值表示 Connect 应使用更新的配置属性重新启动/重新加载连接器。如果外部配置提供程序指示配置值将来会过期,则实际上可能会在将来安排重新启动。
Type: |
---|
Default: |
Valid Values: |
Importance: |
transforms
应用于记录的转换的别名。
Type: |
---|
Default: |
Valid Values: |
Importance: |
predicates
转换使用的谓词的别名。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.retry.timeout
重新尝试失败操作的最大持续时间(以毫秒为单位)。默认值为 0,这意味着不会尝试重试。使用 -1 进行无限重试。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.retry.delay.max.ms
连续重试之间的最大持续时间(以毫秒为单位)。一旦达到此限制,抖动就会添加到延迟中,以防止雷群问题。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.tolerance
连接器操作期间容忍错误的行为。“none”是默认值,表示任何错误都将导致连接器任务立即失败;“all”更改行为以跳过有问题的记录。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.log.enable
如果为 true,则将每个错误以及失败操作的详细信息和有问题的记录写入 Connect 应用程序日志。默认情况下此值为“false”,因此仅报告不能容忍的错误。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.log.include.messages
是否在日志中包含导致失败的连接记录。对于接收器记录,将记录主题、分区、偏移量和时间戳。对于源记录,将记录键和值(及其模式)、所有标头以及时间戳、Kafka 主题、Kafka 分区、源分区和源偏移量。默认情况下这是“false”,这将阻止记录键、值和标头写入日志文件。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.deadletterqueue.topic.name
用作死信队列 (DLQ) 的主题名称,用于处理由此接收器连接器或其转换或转换器时导致错误的消息。默认情况下,主题名称为空,这意味着 DLQ 中不会记录任何消息。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.deadletterqueue.topic.replication.factor
当死信队列主题尚不存在时,用于创建该主题的复制因子。
Type: |
---|
Default: |
Valid Values: |
Importance: |
errors.deadletterqueue.context.headers.enable
如果为 true,则将包含错误上下文的标头添加到写入死信队列的消息中。为了避免与原始记录中的标头冲突,所有错误上下文标头键,所有错误上下文标头键都将以__connect.errors.
Type: |
---|
Default: |
Valid Values: |
Importance: |
3.6 Kafka流配置
以下是 Kafka Streams 客户端库的配置。
application.id
流处理应用程序的标识符。在 Kafka 集群中必须是唯一的。它用作 1) 默认客户端 ID 前缀,2) 用于成员资格管理的组 ID,3) 变更日志主题前缀。
Type: |
---|
Default: |
Valid Values: |
Importance: |
bootstrap.servers
用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用所有服务器,无论此处指定哪些服务器进行引导 - 该列表仅影响用于发现全套服务器的初始主机。该列表应采用以下形式host1:port1,host2:port2,...
。由于这些服务器仅用于初始连接以发现完整的集群成员资格(可能会动态更改),因此此列表不需要包含完整的服务器集(不过,您可能需要多个服务器,以防服务器停机) 。
Type: |
---|
Default: |
Valid Values: |
Importance: |
num.standby.replicas
每个任务的备用副本数。
Type: |
---|
Default: |
Valid Values: |
Importance: |
state.dir
状态存储的目录位置。对于共享相同底层文件系统的每个流实例,此路径必须是唯一的。
Type: |
---|
Default: |
Valid Values: |
Importance: |
acceptable.recovery.lag
客户端被视为已赶上足以接收活动任务分配的最大可接受滞后(要赶上的偏移量数量)。分配后,它仍然会在处理之前恢复变更日志的其余部分。为了避免重新平衡期间处理暂停,此配置应对应于给定工作负载的远低于一分钟的恢复时间。必须至少为 0。
Type: |
---|
Default: |
Valid Values: |
Importance: |
cache.max.bytes.buffering
用于跨所有线程缓冲的最大内存字节数
Type: |
---|
Default: |
Valid Values: |
Importance: |
client.id
用于内部消费者、生产者和恢复消费者的客户端 ID 的 ID 前缀字符串,模式为<client.id>-StreamThread-<threadSequenceNumber$gt;-<consumer|producer|restore-consumer>
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.deserialization.exception.handler
实现该org.apache.kafka.streams.errors.DeserializationExceptionHandler
接口的异常处理类。
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.key.serde
实现org.apache.kafka.common.serialization.Serde
接口的键的默认序列化器/反序列化器类。org.apache.kafka.common.serialization.Serde
请注意,当使用窗口化 Serde 类时,还需要通过“default.windowed.key.serde.inner”或“default.windowed.value.serde.inner”设置实现该接口的内部 serde 类
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.list.key.serde.inner
实现接口的 key 的 list serde 的默认内部类org.apache.kafka.common.serialization.Serde
。当且仅当default.key.serde
配置设置为org.apache.kafka.common.serialization.Serdes.ListSerde
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.list.key.serde.type
实现java.util.List
接口的键的默认类。当且仅当default.key.serde
配置设置为org.apache.kafka.common.serialization.Serdes.ListSerde
Note 当使用 list serde 类时,需要设置org.apache.kafka.common.serialization.Serde
通过 'default.list.key.serde.inner' 实现接口的内部 serde 类时,才会读取此配置
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.list.value.serde.inner
实现org.apache.kafka.common.serialization.Serde
接口的值的列表 serde 的默认内部类。当且仅当default.value.serde
配置设置为org.apache.kafka.common.serialization.Serdes.ListSerde
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.list.value.serde.type
实现java.util.List
接口的值的默认类。当且仅当default.value.serde
配置设置为org.apache.kafka.common.serialization.Serdes.ListSerde
Note 当使用 list serde 类时,需要设置org.apache.kafka.common.serialization.Serde
通过 'default.list.value.serde.inner' 实现接口的内部 serde 类时,才会读取此配置
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.production.exception.handler
实现该org.apache.kafka.streams.errors.ProductionExceptionHandler
接口的异常处理类。
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.timestamp.extractor
实现该org.apache.kafka.streams.processor.TimestampExtractor
接口的默认时间戳提取器类。
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.value.serde
实现 org.apache.kafka.common.serialization.Serde
接口的值的默认序列化器/反序列化器类。 请注意,当使用窗口化 Serde 类时,需要通过 default.windowed.key.serde.inner
或 default.windowed
设置实现 org.apache.kafka.common.serialization.Serde
接口的内部.
Default serializer / deserializer class for value that implements the org.apache.kafka.common.serialization.Serde
interface. Note when windowed serde class is used, one needs to set the inner serde class that implements the org.apache.kafka.common.serialization.Serde
interface via 'default.windowed.key.serde.inner' or 'default.windowed.value.serde.inner' as well
Type: |
---|
Default: |
Valid Values: |
Importance: |
max.task.idle.ms
此配置控制连接和合并是否可能产生无序结果。 配置值是流任务在完全赶上某些(但不是全部)输入分区以等待生产者发送附加记录并避免潜在的无序记录处理时保持空闲状态的最长时间(以毫秒为单位) 跨多个输入流。 默认值(零)不等待生产者发送更多记录,但它会等待获取代理上已存在的数据。 此默认值意味着对于代理上已存在的记录,Streams 将按时间戳顺序处理它们。 设置为 -1 以完全禁用空闲并处理任何本地可用的数据,即使这样做可能会产生无序处理。
Type: |
---|
Default: |
Valid Values: |
Importance: |
max.warmup.replicas
可以一次分配的最大预热副本数(超出配置的 num.standbys 的额外备用副本),以便在任务在已重新分配到的另一实例上预热时保持任务在一个实例上可用。用于限制可用于实现高可用性的额外代理流量和集群状态。必须至少为 1。注意,1 个预热副本对应一个 Stream Task。此外,请注意,每个预热副本只能在重新平衡期间提升为活动任务(通常在所谓的探测重新平衡期间,其发生频率由“probing.rebalance.interval.ms”配置指定)。这意味着活动任务从一个 Kafka Streams 实例迁移到另一个实例的最大速率可以通过 (`max.warmup.replicas` / `probing.rebalance.
Type: |
---|
Default: |
Valid Values: |
Importance: |
num.stream.threads
执行流处理的线程数。
Type: |
---|
Default: |
Valid Values: |
Importance: |
processing.guarantee
应使用的处理保证。可能的值为at_least_once
(默认)和exactly_once_v2
(需要代理版本 2.5 或更高版本)。已弃用的选项有exactly_once
(需要代理版本 0.11.0 或更高版本)和exactly_once_beta
(需要代理版本 2.5 或更高版本)。请注意,默认情况下,一次处理需要至少三个代理的集群,推荐的生产设置是什么?对于开发,您可以通过调整代理设置transaction.state.log.replication.factor
和来更改此设置transaction.state.log.min.isr
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
rack.aware.assignment.tags
用于跨 Kafka Streams 实例分配备用副本的客户端标签键列表。配置后,Kafka Streams 将尽最大努力在每个客户端标签维度上分配备用任务。
Type: |
---|
Default: |
Valid Values: |
Importance: |
replication.factor
流处理应用程序创建的更改日志主题和重新分区主题的复制因子。默认值-1
(含义:使用代理默认复制因子)需要代理版本 2.4 或更高版本
Type: |
---|
Default: |
Valid Values: |
Importance: |
security.protocol
用于与broker通信的协议。有效值为:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL。
Type: |
---|
Default: |
Valid Values: |
Importance: |
statestore.cache.max.bytes
用于所有线程的状态存储缓存的最大内存字节数
Type: |
---|
Default: |
Valid Values: |
Importance: |
task.timeout.ms
任务可能因内部错误而停止并重试直到出现错误的最长时间(以毫秒为单位)。对于 0 毫秒的超时,任务将针对第一个内部错误引发错误。对于任何大于 0 毫秒的超时,任务将在引发错误之前至少重试一次。
Type: |
---|
Default: |
Valid Values: |
Importance: |
topology.optimization
告诉 Kafka Streams 是否应该优化拓扑以及应用哪些优化的配置。可接受的值为:“+NO_OPTIMIZATION+”、“+OPTIMIZE+”或以逗号分隔的特定优化列表:(“+REUSE_KTABLE_SOURCE_TOPICS+”、“+MERGE_REPARTITION_TOPICS+”+“SINGLE_STORE_SELF_JOIN+”)。默认情况下为“NO_OPTIMIZATION”。
Type: |
---|
Default: |
Valid Values: |
Importance: |
application.server
指向用户定义端点的主机:端口对,可用于此 KafkaStreams 实例上的状态存储发现和交互式查询。
Type: |
---|
Default: |
Valid Values: |
Importance: |
auto.jmx.reporter
已弃用。是否自动包含 JmxReporter,即使它没有在 中列出metric.reporters
。此配置将在 Kafka 4.0 中删除,用户应添加org.apache.kafka.common.metrics.JmxReporter
该配置metric.reporters
以启用 JmxReporter。
Type: |
---|
Default: |
Valid Values: |
Importance: |
buffered.records.per.partition
每个分区缓冲的最大记录数。
Type: |
---|
Default: |
Valid Values: |
Importance: |
built.in.metrics.version
要使用的内置指标的版本。
Type: |
---|
Default: |
Valid Values: |
Importance: |
commit.interval.ms
提交处理进度的频率(以毫秒为单位)。对于至少一次处理,提交意味着保存处理器的位置(即偏移量)。对于exactly-once处理来说,意味着提交事务,包括保存位置以及使输出主题中提交的数据对隔离级别为read_commissed的消费者可见。(注意,如果processing.guarantee
设置为exactly_once_v2
, exactly_once
,则默认值为100
,否则默认值为30000
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
connections.max.idle.ms
在该配置指定的毫秒数后关闭空闲连接。
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.client.supplier
实现该org.apache.kafka.streams.KafkaClientSupplier
接口的客户端供应商类。
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.dsl.store
DSL 运营商使用的默认状态存储类型。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metadata.max.age.ms
即使我们没有看到任何分区领导层发生变化以主动发现任何新的代理或分区,我们也会强制刷新元数据,以毫秒为单位的时间段。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metric.reporters
用作指标报告者的类的列表。实现该org.apache.kafka.common.metrics.MetricsReporter
接口允许插入将收到新指标创建通知的类。JmxReporter 始终包含在内以注册 JMX 统计信息。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.num.samples
为计算指标而维护的样本数量。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.recording.level
指标的最高记录级别。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.sample.window.ms
计算指标样本的时间窗口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
poll.ms
阻止等待输入的时间量(以毫秒为单位)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
probing.rebalance.interval.ms
触发重新平衡以探测已完成预热并准备好激活的预热副本之前等待的最长时间(以毫秒为单位)。将继续触发探测重新平衡,直到分配平衡。必须至少 1 分钟。
Type: |
---|
Default: |
Valid Values: |
Importance: |
receive.buffer.bytes
读取数据时使用的 TCP 接收缓冲区 (SO_RCVBUF) 的大小。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
reconnect.backoff.max.ms
重新连接到多次连接失败的代理时等待的最长时间(以毫秒为单位)。 如果提供,每个主机的退避将在每次连续连接失败时呈指数增加,直至达到此最大值。 计算退避增量后,添加 20% 的随机抖动以避免连接风暴。
Type: |
---|
Default: |
Valid Values: |
Importance: |
reconnect.backoff.ms
尝试重新连接到给定主机之前等待的基本时间量。 这避免了在紧密循环中重复连接到主机。 此退避适用于客户端与代理的所有连接尝试。
Type: |
---|
Default: |
Valid Values: |
Importance: |
repartition.purge.interval.ms
从重新分区主题中删除完全使用的记录的频率(以毫秒为单位)。 自上次清除后至少会在该值之后进行清除,但可能会延迟到以后。 (请注意,与commit.interval.ms
不同,当processing.guarantee
设置为exactly_once_v2
时,该值的默认值保持不变)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
request.timeout.ms
该配置控制客户端等待请求响应的最长时间。 如果在超时之前未收到响应,则客户端将在必要时重新发送请求,或者在重试次数耗尽时使请求失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
retries
设置大于零的值将导致客户端重新发送因潜在的暂时性错误而失败的任何请求。建议将该值设置为零或“MAX_VALUE”,并使用相应的超时参数来控制客户端应重试请求的时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
retry.backoff.ms
尝试重试对给定主题分区的失败请求之前等待的时间。这避免了在某些故障场景下在紧密循环中重复发送请求。
Type: |
---|
Default: |
Valid Values: |
Importance: |
rockdb.config.setter
Rocks DB 配置设置器类或实现该org.apache.kafka.streams.state.RocksDBConfigSetter
接口的类名
Type: |
---|
Default: |
Valid Values: |
Importance: |
send.buffer.bytes
发送数据时使用的 TCP 发送缓冲区 (SO_SNDBUF) 的大小。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
status.cleanup.delay.ms
分区迁移后删除状态之前等待的时间(以毫秒为单位)。state.cleanup.delay.ms
仅删除至少未修改的state.dir
Type: |
---|
Default: |
Valid Values: |
Importance: |
upgrade.from
允许以向后兼容的方式升级。从 [0.10.0, 1.1] 升级到 2.0+ 或从 [2.0, 2.3] 升级到 2.4+ 时需要这样做。从 3.3 升级到更新版本时,不需要指定此配置。默认为“null”。接受的值为“0.10.0”、“0.10.1”、“0.10.2”、“0.11.0”、“1.0”、“1.1”、“2.0”、“2.1”、“2.2”、“2.3” 、“2.4”、“2.5”、“2.6”、“2.7”、“2.8”、“3.0”、“3.1”、“3.2”、“3.3”、“3.4”(用于从相应的旧版本升级)。
Type: |
---|
Default: |
Valid Values: |
Importance: |
window.size.ms
设置解串器的窗口大小以计算窗口结束时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
windowed.inner.class.serde
窗口记录内部类的默认序列化器/反序列化器。必须实现该org.apache.kafka.common.serialization.Serde
接口。请注意,在 KafkaStreams 应用程序中设置此配置会导致错误,因为它只能从普通消费者客户端使用。
Type: |
---|
Default: |
Valid Values: |
Importance: |
windowstore.changelog.additional.retention.ms
添加到 Windows MaintenanceMs 以确保数据不会过早地从日志中删除。允许时钟漂移。默认为 1 天
Type: |
---|
Default: |
Valid Values: |
Importance: |
3.7 管理配置
以下是 Kafka 管理客户端库的配置。
bootstrap.servers
用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用所有服务器,无论此处指定哪些服务器进行引导 - 该列表仅影响用于发现全套服务器的初始主机。该列表应采用以下形式host1:port1,host2:port2,...
。由于这些服务器仅用于初始连接以发现完整的集群成员资格(可能会动态更改),因此此列表不需要包含完整的服务器集(不过,您可能需要多个服务器,以防服务器停机) 。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.key.password
密钥存储文件中私钥的密码或“ssl.keystore.key”中指定的 PEM 密钥的密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.certificate.chain
证书链采用“ssl.keystore.type”指定的格式。默认 SSL 引擎工厂仅支持带有 X.509 证书列表的 PEM 格式
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.key
私钥采用“ssl.keystore.type”指定的格式。默认 SSL 引擎工厂仅支持带有 PKCS#8 密钥的 PEM 格式。如果密钥已加密,则必须使用“ssl.key.password”指定密钥密码
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.location
密钥存储文件的位置。这对客户端来说是可选的,可用于客户端的双向身份验证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.password
密钥存储文件的存储密码。这对于客户端来说是可选的,并且仅在配置了“ssl.keystore.location”时才需要。PEM 格式不支持密钥存储密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.certificate
采用“ssl.truststore.type”指定格式的受信任证书。默认 SSL 引擎工厂仅支持带有 X.509 证书的 PEM 格式。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.location
信任存储文件的位置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.password
信任存储文件的密码。如果未设置密码,仍将使用配置的信任存储文件,但禁用完整性检查。PEM 格式不支持信任存储密码。
Type: |
---|
Default: |
Valid Values: |
Importance: |
client.dns.lookup
控制客户端如何使用 DNS 查找。如果设置为use_all_dns_ips
,则按顺序连接每个返回的 IP 地址,直到建立成功连接。断开连接后,将使用下一个 IP。一旦所有 IP 使用一次,客户端就会再次从主机名解析 IP(但是 JVM 和操作系统都会缓存 DNS 名称查找)。如果设置为resolve_canonical_bootstrap_servers_only
,则将每个引导地址解析为规范名称列表。在引导阶段之后,其行为与 相同use_all_dns_ips
。
Type: |
---|
Default: |
Valid Values: |
Importance: |
client.id
发出请求时传递给服务器的 id 字符串。这样做的目的是通过允许在服务器端请求日志记录中包含逻辑应用程序名称,能够跟踪 IP/端口之外的请求源。
Type: |
---|
Default: |
Valid Values: |
Importance: |
connections.max.idle.ms
在该配置指定的毫秒数后关闭空闲连接。
Type: |
---|
Default: |
Valid Values: |
Importance: |
default.api.timeout.ms
指定客户端 API 的超时(以毫秒为单位)。此配置用作所有未指定timeout
参数的客户端操作的默认超时。
Type: |
---|
Default: |
Valid Values: |
Importance: |
receive.buffer.bytes
读取数据时使用的 TCP 接收缓冲区 (SO_RCVBUF) 的大小。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
request.timeout.ms
该配置控制客户端等待请求响应的最长时间。如果在超时之前未收到响应,则客户端将在必要时重新发送请求,或者在重试次数耗尽时使请求失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.client.callback.handler.class
实现 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理程序类的完全限定名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.jaas.config
SASL 连接的 JAAS 登录上下文参数采用 JAAS 配置文件使用的格式。JAAS 配置文件格式描述如下。该值的格式为:loginModuleClass controlFlag (optionName=optionValue)*;
。对于代理,配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,需要listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule;
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.service.name
Kafka 运行时使用的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 的配置中定义。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.callback.handler.class
实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理程序类的完全限定名称。对于代理,登录回调处理程序配置必须以侦听器前缀和小写的 SASL 机制名称为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.class
实现 Login 接口的类的完全限定名称。对于代理,登录配置必须以侦听器前缀和小写的 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.mechanism
用于客户端连接的 SASL 机制。这可以是安全提供者可用的任何机制。GSSAPI 是默认机制。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.url
OAuth/OIDC 提供者 URL,提供者的JWKS(JSON Web 密钥集)可以检索。URL 可以基于 HTTP(S) 或基于文件。如果 URL 基于 HTTP(S),则将通过代理启动时配置的 URL 从 OAuth/OIDC 提供程序检索 JWKS 数据。所有当时的密钥都将缓存在代理上以用于传入请求。如果收到 JWT 的身份验证请求,其中包含尚未在缓存中的“kid”标头声明值,则将根据需要再次查询 JWKS 端点。但是,代理会每隔 sasl.oauthbearer.jwks.endpoint.refresh.ms 毫秒轮询一次 URL,以便在收到包含这些密钥的任何 JWT 请求之前使用任何即将到来的密钥刷新缓存。如果 URL 是基于文件的,代理将在启动时从配置的位置加载 JWKS 文件。如果 JWT 包含 JWKS 文件中不存在的“kid”标头值,
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.token.endpoint.url
OAuth/OIDC 身份提供商的 URL。如果 URL 基于 HTTP(S),则它是颁发者的令牌端点 URL,将根据 sasl.jaas.config 中的配置发出登录请求。如果 URL 是基于文件的,则它指定一个包含 OAuth/OIDC 身份提供商颁发的访问令牌(JWT 序列化形式)的文件,用于授权。
Type: |
---|
Default: |
Valid Values: |
Importance: |
security.protocol
用于与broker通信的协议。有效值为:PLAINTEXT、SSL、SASL_PLAINTEXT、SASL_SSL。
Type: |
---|
Default: |
Valid Values: |
Importance: |
send.buffer.bytes
发送数据时使用的 TCP 发送缓冲区 (SO_SNDBUF) 的大小。如果值为-1,将使用操作系统默认值。
Type: |
---|
Default: |
Valid Values: |
Importance: |
socket.connection.setup.timeout.max.ms
客户端等待建立套接字连接的最长时间。对于每个连续的连接失败,连接设置超时将呈指数增长,直至达到此最大值。为了避免连接风暴,将对超时应用 0.2 的随机化因子,从而产生比计算值低 20% 到高 20% 之间的随机范围。
Type: |
---|
Default: |
Valid Values: |
Importance: |
socket.connection.setup.timeout.ms
客户端等待建立套接字连接的时间。如果在超时之前未建立连接,客户端将关闭套接字通道。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.enabled.protocol
为 SSL 连接启用的协议列表。使用 Java 11 或更高版本运行时,默认值为“TLSv1.2、TLSv1.3”,否则为“TLSv1.2”。使用 Java 11 的默认值,如果客户端和服务器都支持 TLSv1.3,则首选 TLSv1.3,否则回退到 TLSv1.2(假设两者至少支持 TLSv1.2)。对于大多数情况,此默认值应该没问题。另请参阅“ssl.protocol”的配置文档。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keystore.type
密钥存储文件的文件格式。这对于客户来说是可选的。默认 `ssl.engine.factory.class` 当前支持的值为 [JKS、PKCS12、PEM]。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.protocol
用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更高版本运行时,默认值为“TLSv1.3”,否则为“TLSv1.2”。该值对于大多数用例来说应该没问题。最新 JVM 中允许的值为“TLSv1.2”和“TLSv1.3”。较旧的 JVM 可能支持“TLS”、“TLSv1.1”、“SSL”、“SSLv2”和“SSLv3”,但由于已知的安全漏洞,不鼓励使用它们。使用此配置和“ssl.enabled.protocols”的默认值,如果服务器不支持“TLSv1.3”,客户端将降级到“TLSv1.2”。如果此配置设置为“TLSv1.2”,客户端将不会使用“TLSv1.3”,即使它是 ssl.enabled.protocols 中的值之一,并且服务器仅支持“TLSv1.3”。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.provider
用于 SSL 连接的安全提供程序的名称。默认值是 JVM 的默认安全提供程序。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.truststore.type
信任存储文件的文件格式。默认 `ssl.engine.factory.class` 当前支持的值为 [JKS、PKCS12、PEM]。
Type: |
---|
Default: |
Valid Values: |
Importance: |
auto.jmx.reporter
已弃用。是否自动包含 JmxReporter,即使它没有在 中列出metric.reporters
。此配置将在 Kafka 4.0 中删除,用户应添加org.apache.kafka.common.metrics.JmxReporter
该配置metric.reporters
以启用 JmxReporter。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metadata.max.age.ms
即使我们没有看到任何分区领导层发生变化以主动发现任何新的代理或分区,我们也会强制刷新元数据,以毫秒为单位的时间段。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metric.reporters
用作指标报告者的类的列表。实现该org.apache.kafka.common.metrics.MetricsReporter
接口允许插入将收到新指标创建通知的类。JmxReporter 始终包含在内以注册 JMX 统计信息。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.num.samples
为计算指标而维护的样本数量。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.recording.level
指标的最高记录级别。
Type: |
---|
Default: |
Valid Values: |
Importance: |
metrics.sample.window.ms
计算指标样本的时间窗口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
reconnect.backoff.max.ms
重新连接到多次连接失败的代理时等待的最长时间(以毫秒为单位)。如果提供,每个主机的退避将在每次连续连接失败时呈指数增加,直至达到此最大值。计算退避增量后,添加 20% 的随机抖动以避免连接风暴。
Type: |
---|
Default: |
Valid Values: |
Importance: |
reconnect.backoff.ms
尝试重新连接到给定主机之前等待的基本时间量。这避免了在紧密循环中重复连接到主机。此退避适用于客户端与代理的所有连接尝试。
Type: |
---|
Default: |
Valid Values: |
Importance: |
retries
设置大于零的值将导致客户端重新发送因潜在的暂时性错误而失败的任何请求。建议将该值设置为零或“MAX_VALUE”,并使用相应的超时参数来控制客户端应重试请求的时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
retry.backoff.ms
尝试重试失败的请求之前等待的时间。这避免了在某些故障场景下在紧密循环中重复发送请求。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.kinit.cmd
Kerberos kinit 命令路径。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.min.time.before.relogin
刷新尝试之间的登录线程睡眠时间。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.ticket.renew.jitter
添加到更新时间的随机抖动的百分比。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.kerberos.ticket.renew.window.factor
登录线程将休眠,直到达到从上次刷新到票证到期的指定时间窗口因子,此时它将尝试更新票证。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.connect.timeout.ms
外部身份验证提供程序连接超时的(可选)值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.read.timeout.ms
外部身份验证提供程序读取超时的(可选)值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.buffer.seconds
刷新凭证时在凭证过期前维持的缓冲时间量(以秒为单位)。如果刷新发生的时间比缓冲秒数更接近到期,则刷新将向上移动以维持尽可能多的缓冲时间。合法值介于 0 到 3600(1 小时)之间;如果未指定值,则使用默认值 300(5 分钟)。如果该值和 sasl.login.refresh.min.period.seconds 的总和超过凭证的剩余生命周期,则它们都会被忽略。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.min.period.seconds
登录刷新线程在刷新凭据之前等待的所需最短时间(以秒为单位)。合法值介于 0 到 900(15 分钟)之间;如果未指定值,则使用默认值 60(1 分钟)。如果该值和 sasl.login.refresh.buffer.seconds 的总和超过凭证的剩余生命周期,则它们都会被忽略。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.window.factor
登录刷新线程将休眠,直到达到相对于凭证生命周期的指定窗口因子,此时它将尝试刷新凭证。合法值介于 0.5 (50%) 和 1.0 (100%)(含)之间;如果未指定值,则使用默认值 0.8 (80%)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.refresh.window.jitter
相对于添加到登录刷新线程睡眠时间的凭证生命周期的最大随机抖动量。合法值介于 0 和 0.25 (25%) 之间(含);如果未指定值,则使用默认值 0.05 (5%)。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.retry.backoff.max.ms
尝试登录外部身份验证提供程序之间的最长等待时间(可选)值(以毫秒为单位)。Login 使用指数退避算法,初始等待基于 sasl.login.retry.backoff.ms 设置,尝试之间的等待长度将加倍,直至达到 sasl.login.retry.backoff.max 指定的最大等待长度。毫秒设置。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.login.retry.backoff.ms
尝试登录外部身份验证提供程序之间的初始等待时间(可选)值(以毫秒为单位)。Login 使用指数退避算法,初始等待基于 sasl.login.retry.backoff.ms 设置,尝试之间的等待长度将加倍,直至达到 sasl.login.retry.backoff.max 指定的最大等待长度。毫秒设置。目前仅适用于 OAUTHBEARER。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.clock.skew.seconds
以秒为单位的(可选)值,以允许 OAuth/OIDC 身份提供商和代理的时间之间存在差异。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.expected.audience
代理的(可选)逗号分隔设置,用于验证 JWT 是否是为预期受众之一颁发的。将检查 JWT 是否有标准 OAuth“aud”声明,如果设置了此值,代理将匹配 JWT 的“aud”声明中的值,以查看是否存在完全匹配。如果不匹配,代理将拒绝 JWT,身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.expected.issuer
代理用于验证 JWT 是否由预期发行者创建的(可选)设置。将检查 JWT 是否有标准 OAuth“iss”声明,如果设置了该值,代理会将其与 JWT 的“iss”声明中的内容完全匹配。如果不匹配,代理将拒绝 JWT,身份验证将失败。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.refresh.ms
代理在刷新其 JWKS(JSON Web 密钥集)缓存之间等待的(可选)值(以毫秒为单位),该缓存包含用于验证 JWT 签名的密钥。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms
尝试从外部身份验证提供程序检索 JWKS(JSON Web 密钥集)之间的最长等待时间(可选)值(以毫秒为单位)。JWKS 检索使用指数退避算法,并根据 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置进行初始等待,并且两次尝试之间的等待长度将加倍,直至达到 sasl.oauthbearer.jwks 指定的最大等待长度.endpoint.retry.backoff.max.ms 设置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.jwks.endpoint.retry.backoff.ms
来自外部身份验证提供程序的 JWKS(JSON Web 密钥集)检索尝试之间的初始等待时间(可选)值(以毫秒为单位)。JWKS 检索使用指数退避算法,并根据 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置进行初始等待,并且两次尝试之间的等待长度将加倍,直至达到 sasl.oauthbearer.jwks 指定的最大等待长度.endpoint.retry.backoff.max.ms 设置。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.scope.claim.name
该范围的 OAuth 声明通常被命名为“scope”,但如果 OAuth/OIDC 提供程序对该声明使用不同的名称,则此(可选)设置可以为 JWT 负载声明中包含的范围提供不同的名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
sasl.oauthbearer.sub.claim.name
主题的 OAuth 声明通常命名为“sub”,但如果 OAuth/OIDC 提供程序对该声明使用不同的名称,则此(可选)设置可以为 JWT 负载声明中包含的主题提供不同的名称。
Type: |
---|
Default: |
Valid Values: |
Importance: |
security.providers
可配置创建者类的列表,每个类返回一个实现安全算法的提供者。这些类应该实现该org.apache.kafka.common.security.auth.SecurityProviderCreator
接口。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.cipher.suites
密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下,支持所有可用的密码套件。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.endpoint.identification.algorithm
使用服务器证书验证服务器主机名的端点识别算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.engine.factory.class
org.apache.kafka.common.security.auth.SslEngineFactory 类型的类提供 SSLEngine 对象。默认值为 org.apache.kafka.common.security.ssl.DefaultSslEngineFactory
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.keymanager.algorithm
密钥管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的密钥管理器工厂算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.secure.random.implementation
用于 SSL 加密操作的 SecureRandom PRNG 实现。
Type: |
---|
Default: |
Valid Values: |
Importance: |
ssl.trustmanager.algorithm
信任管理器工厂用于 SSL 连接的算法。默认值是为 Java 虚拟机配置的信任管理器工厂算法。
Type: |
---|
Default: |
Valid Values: |
Importance: |
3.8 系统属性
Kafka 支持一些可以通过 Java 系统属性启用的配置。系统属性通常通过将 -D 标志传递给运行 Kafka 组件的 Java 虚拟机来设置。以下是支持的系统属性。
org.apache.kafka.disallowed.login.modules
此系统属性用于禁用 SASL JAAS 配置中存在问题的登录模块使用。此属性接受以逗号分隔的登录模块名称列表。默认情况下,com.sun.security.auth.module.JndiLoginModule登录模块被禁用。
如果用户想要启用 JndiLoginModule,用户需要显式重置系统属性,如下所示。我们建议用户验证配置并仅允许可信的 JNDI 配置。有关更多详细信息CVE-2023-25194。
-Dorg.apache.kafka.disallowed.login.modules=
要禁用更多登录模块,请使用逗号分隔的登录模块名称更新系统属性。确保将JndiLoginModule模块名称显式添加到逗号分隔的列表中,如下所示。
-Dorg.apache.kafka.disallowed.login.modules=com.sun.security.auth.module.JndiLoginModule,com.ibm.security.auth.module.LdapLoginModule,com.ibm.security.auth.module.Krb5LoginModule
自从: |
---|
默认值: |