Kafka 配置属性


Red Hat AMQ Streams 2.4

使用配置属性配置 Kafka 组件

摘要

充分利用 Kafka 组件如何使用 Kafka 配置属性运行。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 代理配置属性

advertised.listeners

type: string
Default: null
Importance: high
Dynamic update: per-broker

如果 监听程序 与监听程序配置属性不同,则会向 ZooKeeper 发布给 ZooKeeper 以供客户端使用。在 IaaS 环境中,这可能与代理绑定的接口不同。如果没有设置,则使用 监听程序 的值。与 监听器 不同,公告 0.0.0.0 meta-address 无效。另外,与 监听器 不同,此属性中可能会有重复的端口,以便配置一个监听程序来公告另一个侦听器的地址。在某些情况下,这在一些使用外部负载均衡器时很有用。

auto.create.topics.enable

Type: boolean
Default: true
Importance: high
Dynamic update: read-only

在服务器上启用自动创建主题。

auto.leader.rebalance.enable

Type: boolean
Default: true
Importance: high
Dynamic update: read-only

启用自动领导平衡。后台线程定期检查分区领导的发布,由 leader.imbalance.check.interval.seconds 进行配置。如果领导不平衡超过 leader.imbalance.per.broker.percentage,则触发分区的首选领导机。

background.threads

type: int
Default: 10
Valid Values: [1,…​]
Importance: high
Dynamic update: cluster-wide

用于各种后台处理任务的线程数量。

broker.id

type: int
Default: -\":\"Importance: high
Dynamic update: read-only

此服务器的代理 ID。如果未设置,则会生成一个唯一代理 id。要避免 zookeeper 生成的代理 ID 和用户的 broker id 之间的冲突,生成的代理 ID 从 reserved.broker.max.id + 1 开始。

compression.type

type: string
Default: producer
Valid Values: [uncompressed, zstd, lz4, snappy, gzip, producer]
Importance: high
Dynamic update: cluster-wide

指定给定主题的最终压缩类型。此配置接受标准压缩代码('gzip', 'snappy', 'lz4', 'zstd')。它还接受 'uncompressed',它相当于没有压缩;而 'producer' 意味着保留由制作者设置的原始压缩代码。

control.plane.listener.name

type: string
Default: null
Importance: high
Dynamic update: read-only

用于控制器和代理间的通信的监听程序名称。代理将使用 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 On startup, the broker will start listening on "192.1.1.8:9094" with security protocol "SSL"。在控制器上,通过 zookeeper 发现代理公布的端点时,它将使用 control.plane.listener.name 来查找端点,它将用来建立到代理的连接。例如,如果代理公布的在 zookeeper 上的端的为: "endpoints" : ["INTERNAL://broker1.example.com:9092","EXTERNAL://broker1.example.com:9093","CONTROLLER://broker1.example.com:9094"] and the controller’s config is : listener.security.protocol.map = INTERNAL:PLAINTEXT, EXTERNAL:SSL, CONTROLLER:SSL control.plane.listener.name = CONTROLLER then controller will use "broker1.example.com:9094" with security protocol "SSL" to connect to the broker。如果没有明确配置,则默认值为 null,并且没有控制器连接的专用端点。如果明确配置,则该值不能与 inter.broker.listener.name 的值相同。

controller.listener.names

type: string
Default: null
Importance: high
Dynamic update: read-only

控制器使用的监听程序名称的逗号分隔列表。这在 KRaft 模式下运行时需要。与控制器仲裁通信时,代理始终使用此列表中的第一个监听程序。注: 基于 ZK 的控制器不应设置此配置。

controller.quorum.election.backoff.max.ms

type: int
Default: 1000 (1 second)
Importance: high
Dynamic update: read-only

启动新选举前的最大时间(以毫秒为单位)。这在二进制 exponential backoff 机制中使用,有助于防止网格锁定的选举。

controller.quorum.election.timeout.ms

type: int
Default: 1000 (1 second)
Importance: high
Dynamic update: read-only

在触发新选举前,等待最大时间(毫秒)而无需从领导获取。

controller.quorum.fetch.timeout.ms

Type: int
Default: 2000 (2 秒)
Importance: high
Dynamic update: read-only

在成为投票者的候选和触发选举前,没有成功从当前领导机获取的最长时间;在要求出现新 epoch 前,从大多数仲裁接收最大时间,以查看是否有新的 epoch。

controller.quorum.voters

type: list
Default: ""
Valid Values: non-empty list
Importance: high
Dynamic update: read-only

以逗号分隔 {id}@{host}:{port}:{port}:{port} 条目的逗号分隔列表中 voters 集合的 id/endpoint 信息映射。例如: 1@localhost:9092,2@localhost:9093,3@localhost:9094

delete.topic.enable

Type: boolean
Default: true
Importance: high
Dynamic update: read-only

启用删除主题。如果此配置关闭,通过管理工具删除主题将无效。

early.start.listeners

type: string
Default: null
Importance: high
Dynamic update: read-only

以逗号分隔的监听程序名称列表,可以在授权器完成初始化前启动。当授权器依赖于集群本身进行引导时,这很有用,因为 StandardAuthorizer (在元数据日志中存储 ACL 的情况) 默认情况下,controller.listener.names 中包含的所有监听程序也会早期启动监听程序。如果侦听器接受外部流量,则不应显示在此列表中。

leader.imbalance.check.interval.seconds

Type: long
Default: 300
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

控制器触发分区重新平衡检查的频率。

leader.imbalance.per.broker.percentage

type: int
Default: 10
Importance: high
Dynamic update: read-only

每个代理允许的领导 imbalance 的比率。如果每个代理有超过这个值,控制器会触发领导平衡。该值以百分比形式指定。

监听器

type: string
Default: PLAINTEXT://:9092
Importance: high
Dynamic update: per-broker

侦听器列表 - 将要侦听的 URI 列表和侦听器名称。如果监听器名称不是安全协议,还必须设置 listener.security.protocol.map。侦听器名称和端口号必须是唯一的。将 hostname 指定为 0.0.0.0 以绑定到所有接口。将 hostname 留空给默认接口。法律侦听器列表示例: PLAINTEXT://myhost:9092,SSL://:9091 CLIENT://0.0.0.0:9092,REPLICATION://localhost:9093.

log.dir

type: string
Default: /tmp/kafka-logs
Importance: high
Dynamic update: read-only

保存日志数据的目录(log.dirs 属性的补充)。

log.dirs

type: string
Default: null
Importance: high
Dynamic update: read-only

存储日志数据的目录的逗号分隔列表。如果没有设置,则使用 log.dir 的值。

log.flush.interval.messages

Type: long
Default: 9223372036854775807
Valid Values: [1,…​]
Importance: high
Dynamic update: cluster-wide

在消息被刷新到磁盘之前,日志分区中积累的消息数。

log.flush.interval.ms

Type: long
Default: null
Importance: high
Dynamic update: cluster-wide

在刷新到磁盘前,任何主题中消息的最大时间(ms)保存在内存中。如果没有设置,则使用 log.flush.scheduler.interval.ms 中的值。

log.flush.offset.checkpoint.interval.ms

type: int
Default: 60000 (1 minute)
Valid Values: [0,…​]
Importance: high
Dynamic update: read-only

我们更新最后一次清空的持久记录的频率,它充当日志恢复点。

log.flush.scheduler.interval.ms

Type: long
Default: 9223372036854775807
Importance: high
Dynamic update: read-only

日志冲刷检查是否有任何日志需要刷新到磁盘的频率。

log.flush.start.offset.checkpoint.interval.ms

type: int
Default: 60000 (1 minute)
Valid Values: [0,…​]
Importance: high
Dynamic update: read-only

我们更新日志启动偏移的持久记录的频率。

log.retention.bytes

Type: long
Default: -\":\"Importance: high
Dynamic update: cluster-wide

在删除日志前的最大日志大小。

log.retention.hours

type: int
Default: 168
Importance: high
Dynamic update: read-only

在删除日志文件前(以小时为单位)保留日志文件的小时数,以及 log.retention.ms 属性。

log.retention.minutes

type: int
Default: null
Importance: high
Dynamic update: read-only

在删除日志文件前(以分钟为单位)保留日志文件的分钟数,次要到 log.retention.ms 属性。如果没有设置,则使用 log.retention.hours 的值。

log.retention.ms

Type: long
Default: null
Importance: high
Dynamic update: cluster-wide

在删除日志文件(以毫秒为单位)前保留日志文件的毫秒数(以毫秒为单位),则使用 log.retention.minutes 的值。如果设置为 -1,则不会应用时间限制。

log.roll.hours

type: int
Default: 168
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

新日志片段推出(以小时为单位)前的最大时间,次要到 log.roll.ms 属性。

log.roll.jitter.hours

type: int
Default: 0
Valid Values: [0,…​]
Importance: high
Dynamic update: read-only

从 logRollTimeMillis (以小时为单位)中减去的最大 jitter,次要到 log.roll.jitter.ms 属性。

log.roll.jitter.ms

Type: long
Default: null
Importance: high
Dynamic update: cluster-wide

从 logRollTimeMillis 中减去的最大 jitter (以毫秒为单位)。如果没有设置,则使用 log.roll.jitter.hours 的值。

log.roll.ms

Type: long
Default: null
Importance: high
Dynamic update: cluster-wide

推出新日志段前的最大时间(以毫秒为单位)。如果没有设置,则使用 log.roll.hours 的值。

log.segment.bytes

Type: int
Default: 1073741824 (1 gibibyte)
Valid Values: [14,…​]
Importance: high
Dynamic update: cluster-wide

单个日志文件的最大大小。

log.segment.delete.delay.ms

Type: long
Default: 60000 (1 minute)
Valid Values: [0,…​]
Importance: high
Dynamic update: cluster-wide

从文件系统删除文件前等待的时间。

message.max.bytes

type: int
Default: 1048588
Valid Values: [0,…​]
Importance: high
Dynamic update: cluster-wide

Kafka 允许的最大记录批处理大小(如果启用压缩,则在压缩后)。如果增加且有 0.10.2 旧的消费者,则用户的获取大小也必须增加,以便他们可以获取大量记录批处理。在最新的消息格式版本中,记录始终分组到批处理中,以提高效率。在以前的消息格式版本中,未压缩的记录不会分组到批处理中,此限制仅适用于那种记录。这可以为每个主题设置 max.message.bytes 配置。

metadata.log.dir

type: string
Default: null
Importance: high
Dynamic update: read-only

此配置决定将集群的元数据日志置于 KRaft 模式的位置。如果没有设置,则元数据日志放置在 log.dirs 的第一个日志目录中。

metadata.log.max.record.bytes.between.snapshots

Type: long
Default: 20971520
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

这是生成新快照前的最新快照和高水位线之间的日志的最大字节数。默认值为 20971520。要根据经过的时间生成快照,请参阅 metadata.log.max.snapshot.interval.ms 配置。当达到最大时间间隔或达到最大字节数时,Kafka 节点会生成一个快照。

metadata.log.max.snapshot.interval.ms

Type: long
Default: 3600000 (1 小时)
Valid Values: [0,…​]
Importance: high
Dynamic update: read-only

如果日志中没有包含在最新快照中的记录,则等待生成快照的最大毫秒数。值为零可禁用基于时间的快照生成。默认值为 3600000。要根据元数据字节数生成快照,请参阅 metadata.log.max.record.bytes.between.snapshots 配置。当达到最大时间间隔或达到最大字节数时,Kafka 节点会生成一个快照。

metadata.log.segment.bytes

type: int
Default: 1073741824 (1 gibibyte)
Valid Values: [12,…​]
Importance: high
Dynamic update: read-only

单个元数据日志文件的最大大小。

metadata.log.segment.ms

Type: long
Default: 604800000 (7 days)
Importance: high
Dynamic update: read-only

推出新元数据日志文件前的最长时间(以毫秒为单位)。

metadata.max.retention.bytes

Type: long
Default: 104857600 (100 mebibytes)
Importance: high
Dynamic update: read-only

在删除旧快照和日志文件前,元数据日志和快照的最大大小。由于在删除任何日志前至少必须存在一个快照,因此这是一个软限制。

metadata.max.retention.ms

Type: long
Default: 604800000 (7 days)
Importance: high
Dynamic update: read-only

在删除元数据日志文件或快照前保留元数据日志文件或快照的毫秒数。由于在删除任何日志前至少必须存在一个快照,因此这是一个软限制。

min.insync.replicas

type: int
Default: 1
Valid Values: [1,…​]
Importance: high
Dynamic update: cluster-wide

当制作者将 acks 设置为 "all" (或 "-1"),min.insync.replicas 指定必须确认写入的最小副本数才能被视为成功。如果无法满足这个最小值,则制作者会引发异常( NotEnoughReplicas 或 NotEnoughReplicasAfterAppend)。当一起使用时,min.insync.replicas 和 acks 允许您强制执行更大的持久性保证。典型的场景是创建一个复制因子为 3 的主题,将 min.insync.replicas 设置为 2,并使用 acks of "all" 生成。这将确保,当大多数副本没有收到写入时,生产者会引发异常。

node.id

type: int
Default: -\":\"Importance: high
Dynamic update: read-only

与此进程关联的角色的节点 ID 在 process.roles 非空时扮演。这是在 KRaft 模式下运行时需要的配置。

num.io.threads

type: int
Default: 8
Valid Values: [1,…​]
Importance: high
Dynamic update: cluster-wide

服务器用于处理请求的线程数量,其中可能包括磁盘 I/O。

num.network.threads

type: int
Default: 3
Valid Values: [1,…​]
Importance: high
Dynamic update: cluster-wide

服务器用来接收来自网络的请求的线程数量,并向网络发送响应。

num.recovery.threads.per.data.dir

type: int
Default: 1
Valid Values: [1,…​]
Importance: high
Dynamic update: cluster-wide

用于在启动时日志恢复的每个数据的线程数量,并在关闭时清除。

num.replica.alter.log.dirs.threads

type: int
Default: null
Importance: high
Dynamic update: read-only

可以在日志目录之间移动副本的线程数量,其中可能包括磁盘 I/O。

num.replica.fetchers

Type: int
Default: 1
Importance: high
Dynamic update: cluster-wide

用于从每个源代理复制记录的获取程序线程数量。每个代理上的获取器总数由 num.replica.fetchers 绑定,乘以集群中的代理数量。这个值可以提高后续程序中的 I/O 并行程度,以更高的 CPU 和内存利用率的成本为领导代理。

offset.metadata.max.bytes

type: int
Default: 4096 (4 kibibytes)
Importance: high
Dynamic update: read-only

与偏移提交关联的元数据条目的最大大小。

offsets.commit.required.acks

Type: short
Default: -\":\"Importance: high
Dynamic update: read-only

提交前需要的 acks 可以被接受。通常,默认值(-1)不应被覆盖。

offsets.commit.timeout.ms

type: int
Default: 5000 (5 秒)
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

偏移提交将延迟,直到达到所有偏移主题的所有副本接收提交或此超时。这与制作者请求超时类似。

offsets.load.buffer.size

type: int
Default: 5242880
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

在将偏移加载到缓存中时(soft-limit,如果记录太大,则从偏移读取的批处理大小)。

offsets.retention.check.interval.ms

Type: long
Default: 600000 (10 minutes)
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

检查过时偏移的频率。

offsets.retention.minutes

type: int
Default: 10080
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

对于订阅的用户,特定分区的提交偏移将在消费者组丢失其所有消费者(例如为空)后过期并丢弃此保留周期,因为最后一次为分区提交偏移时间,且组不再订阅相应主题。对于独立消费者(使用手动分配),从上次提交起经过此保留周期后偏移将过期。请注意,当通过 delete-group 请求删除组时,其提交偏移也会在没有额外的保留周期的情况下被删除;还要通过 delete-topic 请求删除主题时,传播元数据更新该主题的任何提交偏移也会在没有额外的保留周期的情况下被删除。

offsets.topic.compression.codec

type: int
Default: 0
Importance: high
Dynamic update: read-only

偏移主题的压缩解码器 - 压缩可用于实现"atomic"提交。

offsets.topic.num.partitions

type: int
Default: 50
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

偏移提交主题的分区数量(部署后不应更改)。

offsets.topic.replication.factor

Description: short
Default: 3
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

偏移主题的复制因素(设置更高的值以确保可用性)。在集群大小满足这个复制因子要求前,内部主题创建将失败。

offsets.topic.segment.bytes

type: int
Default: 104857600 (100 mebibytes)
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

偏移主题片段字节应保持相对小,以便加快日志压缩和缓存负载。

process.roles

type: list
Default: ""
Valid Values: [broker, controller]
Importance: high
Dynamic update: read-only

此过程 play 的角色:'broker'、'controller' 或 'broker,controller'(如果两者都是)。此配置仅适用于 KRaft (Kafka Raft)模式(而不是 ZooKeeper)中的集群。为 Zookeeper 集群保留此配置未定义或为空。

queued.max.requests

type: int
Default: 500
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

阻塞网络线程前允许 data-plane 的排队请求数。

replica.fetch.min.bytes

type: int
Default: 1
Importance: high
Dynamic update: read-only

每个获取响应的预期最小字节。如果没有足够的字节,请等待 replica.fetch.wait.max.ms (broker config)。

replica.fetch.wait.max.ms

type: int
Default: 500
Importance: high
Dynamic update: read-only

后续副本发出的每个获取请求的最大等待时间。这个值应该始终小于 replica.lag.time.max.ms,以防止频繁地缩减 ISR 以实现低吞吐量主题。

replica.high.watermark.checkpoint.interval.ms

Type: long
Default: 5000 (5 秒)
Importance: high
Dynamic update: read-only

将高水位线保存到磁盘的频率。

replica.lag.time.max.ms

Type: long
Default: 30000 (30 秒)
Importance: high
Dynamic update: read-only

如果后续者没有发送任何获取请求,或者尚未被消耗到领导日志结束偏移时间,则领导将从 isr 中删除后续者。

replica.socket.receive.buffer.bytes

type: int
Default: 65536 (64 kibibytes)
Importance: high
Dynamic update: read-only

网络请求的套接字接收缓冲区。

replica.socket.timeout.ms

type: int
Default: 30000 (30 秒)
Importance: high
Dynamic update: read-only

网络请求的套接字超时。其值应至少为 replica.fetch.wait.max.ms。

request.timeout.ms

type: int
Default: 30000 (30 秒)
Importance: high
Dynamic update: read-only

配置控制客户端等待请求响应的最长时间。如果响应在超时前收到,客户端会在必要时重新发送请求,或者在重试已耗尽时失败请求。

sasl.mechanism.controller.protocol

type: string
Default: GSSAPI
Importance: high
Dynamic update: read-only

用于与控制器通信的 SASL 机制。默认为 GSSAPI。

socket.receive.buffer.bytes

type: int
Default: 102400 (100 kibibytes)
Importance: high
Dynamic update: read-only

套接字服务器套接字的 SO_RCVBUF 缓冲。如果值为 -1,则会使用 OS 默认值。

socket.request.max.bytes

type: int
Default: 104857600 (100 mebibytes)
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

套接字请求中的最大字节数。

socket.send.buffer.bytes

type: int
Default: 102400 (100 kibibytes)
Importance: high
Dynamic update: read-only

套接字服务器套接字的 SO_SNDBUF 缓冲。如果值为 -1,则会使用 OS 默认值。

transaction.max.timeout.ms

type: int
Default: 900000 (15 分钟)
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

事务允许的最大超时。如果客户端的请求事务时间超过这个值,代理会返回 InitProducerIdRequest 的错误。这可防止客户端太大超时,这可能会使消费者从事务中包含的主题读取。

transaction.state.log.load.buffer.size

type: int
Default: 5242880
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

在将制作者 ID 和事务加载到缓存中时(soft-limit,则覆盖事务日志片段的批处理大小,如果记录太大,则覆盖)。

transaction.state.log.min.isr

type: int
Default: 2
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

覆盖 min.insync.replicas 配置,用于事务主题。

transaction.state.log.num.partitions

type: int
Default: 50
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

事务主题的分区数量(在部署后不应更改)。

transaction.state.log.replication.factor

Description: short
Default: 3
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

事务主题的复制因素(设置更高以确保可用性)。在集群大小满足这个复制因子要求前,内部主题创建将失败。

transaction.state.log.segment.bytes

type: int
Default: 104857600 (100 mebibytes)
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

事务主题片段字节应保持相对小,以便加快日志压缩和缓存负载。

transactional.id.expiration.ms

type: int
Default: 604800000 (7 days)
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

在其事务 ID 过期前,事务协调器会等待,而不接收当前事务的任何事务状态更新。当事务仍在持续时,事务 ID 不会过期。

unclean.leader.election.enable

Type: boolean
Default: false
Importance: high
Dynamic update: cluster-wide

指明是否使 ISR 集中的副本选择为最后的手段,即使这样做可能会导致数据丢失。

zookeeper.connect

type: string
Default: null
Importance: high
Dynamic update: read-only

hostname:port 格式指定 ZooKeeper 连接字符串,其中 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.

zookeeper.connection.timeout.ms

type: int
Default: null
Importance: high
Dynamic update: read-only

客户端等待与 zookeeper 连接的最大时间。如果没有设置,则使用 zookeeper.session.timeout.ms 中的值。

zookeeper.max.in.flight.requests

type: int
Default: 10
Valid Values: [1,…​]
Importance: high
Dynamic update: read-only

在阻塞前,客户端将发送到 Zookeeper 的最大未确认请求数量。

zookeeper.metadata.migration.enable

Type: boolean
Default: false
Importance: high
Dynamic update: read-only

启用 ZK 以 KRaft 迁移。

zookeeper.session.timeout.ms

type: int
Default: 18000 (18 秒)
Importance: high
Dynamic update: read-only

ZooKeeper 会话超时。

zookeeper.set.acl

Type: boolean
Default: false
Importance: high
Dynamic update: read-only

将 client 设置为使用安全 ACL。

broker.heartbeat.interval.ms

type: int
Default: 2000 (2 秒)
Importance: medium
Dynamic update: read-only

代理心跳之间的时间长度(毫秒)。在 KRaft 模式下运行时使用。

broker.id.generation.enable

Type: boolean
Default: true
Importance: medium
Dynamic update: read-only

在服务器上启用自动代理 ID 生成。启用为 reserved.broker.max.id 配置的值时,应检查。

broker.rack

type: string
Default: null
Importance: medium
Dynamic update: read-only

代理的机架.这将用于机架感知复制分配,以进行容错。示例: RACK1、 us-east-1d

broker.session.timeout.ms

type: int
Default: 9000 (9 秒)
Importance: medium
Dynamic update: read-only

如果没有进行心跳,代理租期最后的时间长度(以毫秒为单位)。在 KRaft 模式下运行时使用。

connections.max.idle.ms

Type: long
Default: 600000 (10 分钟)
Importance: medium
Dynamic update: read-only

空闲连接超时:服务器套接字处理器线程关闭闲置超过此的连接。

connections.max.reauth.ms

Type: long
Default: 0
Importance: medium
Dynamic update: read-only

当明确设置为正数(默认值 0 而不是正数)时,会话生命周期不会超过配置的值,将在客户端进行身份验证时传给 v2.2.0 或更高版本的客户端。代理将断开任何在会话生命周期内未重新验证的连接,然后用于重新身份验证以外的任何目的。配置名称可以选择在小写中带有监听器前缀和 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.oauthbearer.connections.max.reauth.ms=3600000。

controlled.shutdown.enable

Type: boolean
Default: true
Importance: medium
Dynamic update: read-only

启用服务器的受控关闭。

controlled.shutdown.max.retries

type: int
Default: 3
Importance: medium
Dynamic update: read-only

受控的关闭可能会因为多个原因失败。这决定了发生此类故障时重试次数。

controlled.shutdown.retry.backoff.ms

Type: long
Default: 5000 (5 秒)
Importance: medium
Dynamic update: read-only

在每次重试前,系统需要时间从导致之前故障的状态中恢复(Controller 故障切换、副本滞后等)。此配置决定了重试前要等待的时间。

controller.quorum.append.linger.ms

type: int
Default: 25
Importance: medium
Dynamic update: read-only

在将写入清除到磁盘前,领导机等待写入的时长(毫秒)。

controller.quorum.request.timeout.ms

type: int
Default: 2000 (2 秒)
Importance: medium
Dynamic update: read-only

配置控制客户端等待请求响应的最长时间。如果响应在超时前收到,客户端会在必要时重新发送请求,或者在重试已耗尽时失败请求。

controller.socket.timeout.ms

type: int
Default: 30000 (30 秒)
Importance: medium
Dynamic update: read-only

controller-to-broker 频道的套接字超时。

default.replication.factor

type: int
Default: 1
Importance: medium
Dynamic update: read-only

自动创建主题的默认复制因素。

delegation.token.expiry.time.ms

Type: long
Default: 86400000 (1 day)
Valid Values: [1,…​]
Importance: medium
Dynamic update: read-only

需要续订令牌前的 miliseconds 的令牌有效时间。默认值 1 天。

delegation.token.master.key

Type: password
Default: null
Importance: medium
Dynamic update: read-only

DEPRECATED:应使用 delegation.token.secret.key 的别名,而不是此配置。

delegation.token.max.lifetime.ms

Type: long
Default: 604800000 (7 days)
Valid Values: [1,…​]
Importance: medium
Dynamic update: read-only

令牌具有最大生命周期,但无法再续订。默认值为 7 天。

delegation.token.secret.key

Type: password
Default: null
Importance: medium
Dynamic update: read-only

用于生成和验证委托令牌的 secret 密钥。必须在所有代理间配置相同的密钥。如果密钥未设置为空字符串,代理将禁用委托令牌支持。

delete.records.purgatory.purge.interval.requests

type: int
Default: 1
Importance: medium
Dynamic update: read-only

删除记录请求的清除间隔(以请求数为单位)。

fetch.max.bytes

type: int
Default: 57671680 (55 mebibytes)
Valid Values: [1024,…​]
Importance: medium
Dynamic update: read-only

我们将为获取请求返回的最大字节数。必须至少为 1024。

fetch.purgatory.purge.interval.requests

type: int
Default: 1000
Importance: medium
Dynamic update: read-only

获取请求的清除间隔(以请求数)。

group.initial.rebalance.delay.ms

type: int
Default: 3000 (3 秒)
Importance: medium
Dynamic update: read-only

在执行第一个重新平衡前,组协调器将等待更多消费者加入新组的时间。延迟时间较长意味着可能会减少重新平衡,但会增加处理开始的时间。

group.max.session.timeout.ms

type: int
Default: 1800000 (30 minutes)
Importance: medium
Dynamic update: read-only

注册使用者允许的最大会话超时。超时时间较长,消费者有足够的时间在心跳间处理信息,以更长的时间检测故障。

group.max.size

type: int
Default: 2147483647
Valid Values: [1,…​]
Importance: medium
Dynamic update: read-only

单个消费者组可以容纳的最大使用者数量。

group.min.session.timeout.ms

type: int
Default: 6000 (6 秒)
Importance: medium
Dynamic update: read-only

注册使用者允许的最小会话超时。较短的超时会导致在更频繁的消费者心跳时更快地检测失败,这可能会给代理资源造成问题。

initial.broker.registration.timeout.ms

type: int
Default: 60000 (1 minute)
Importance: medium
Dynamic update: read-only

在最初使用控制器仲裁注册时,在声明失败并退出代理进程前要等待的毫秒。

inter.broker.listener.name

type: string
Default: null
Importance: medium
Dynamic update: read-only

用于代理间通信的监听程序名称。如果未设置,则监听器名称由 security.inter.broker.protocol 定义。同时设置这个和 security.inter.broker.protocol 属性是一个错误。

inter.broker.protocol.version

Type: string
Default: 3.4-IV0
Valid Values: [0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.10.0-IV0, 0.10.0-IV1, 0.10.1-IV0, 0.10.1-IV1, 0.10.1-IV2, 0.10.2-IV0, 0.11.0-IV0, 0.11.0-IV1, 0.11.0-IV2, 1.0-IV0, 1.1-IV0, 2.0-iv0, 2.0-iv1, 2.1-iv0, 2.1-iv1, 2.1-iv2, 2.2-iv0, 2.2-iv1, 2.3-iv1, 2.3-iv0, 2.4-iv1, 2.5-iv0, 2.6-iv0, 2.6-iv0, 2.7-iv0, 2.7-iv1, 2.7-iv2, 2.8-iv0, 2.8-iv1, 3.0-iv0, 3.0-iv1, 3.0-iv1, 3.0-iv1, 3.1-IV0, 3.2-IV0, 3.3-IV0, 3.3-IV1, 3.3-IV2, 3.3-IV3, 3.4-IV0]
Importance: medium
Dynamic update: read-only

指定要使用的 inter-broker 协议的版本。这通常会在所有代理升级到新版本后被修复。某些有效值为: 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 Check MetadataVersion for the full list。

log.cleaner.backoff.ms

Type: long
Default: 15000 (15 秒)
Valid Values: [0,…​]
Importance: medium
Dynamic update: cluster-wide

没有日志清理时休眠的时间。

log.cleaner.dedupe.buffer.size

Type: long
Default: 134217728
Importance: medium
Dynamic update: cluster-wide

在所有清理线程中用于日志 deduplication 的总内存。

log.cleaner.delete.retention.ms

Type: long
Default: 86400000 (1 day)
Valid Values: [0,…​]
Importance: medium
Dynamic update: cluster-wide

为日志压缩主题保留 delete tombstone 标记的时间长度。此设置还赋予一个时间绑定,消费者在从偏移 0 开始时必须完成读取,以确保它们获得最终阶段的有效快照(否则可以收集到mbstones,然后再完成其扫描)。

log.cleaner.enable

Type: boolean
Default: true
Importance: medium
Dynamic update: read-only

启用日志清理进程在服务器上运行。如果使用带有 cleanup.policy=compact 的任何主题,包括内部偏移主题,则应启用。如果禁用了这些主题,则不会压缩并持续增加这些主题。

log.cleaner.io.buffer.load.factor

Type: double
Default: 0.9
Importance: medium
Dynamic update: cluster-wide

log cleaner dedupe buffer load factor.dedupe 缓冲区已满的百分比可能会变为.较高的值将允许一次清理更多日志,但会导致更多哈希冲突。

log.cleaner.io.buffer.size

type: int
Default: 524288
Valid Values: [0,…​]
Importance: medium
Dynamic update: cluster-wide

在所有清理线程中用于日志清理 I/O 缓冲区的总内存。

log.cleaner.io.max.bytes.per.second

Type: double
Default: 1.7976931348623157E308
Importance: medium
Dynamic update: cluster-wide

日志清理器将节流,以便其读取和写入 i/o 的总和小于这个值。

log.cleaner.max.compaction.lag.ms

Type: long
Default: 9223372036854775807
Valid Values: [1,…​]
Importance: medium
Dynamic update: cluster-wide

在日志中,消息可以保持无法压缩的最长时间。仅适用于被压缩的日志。

log.cleaner.min.cleanable.ratio

Type: double
Default: 0.5
Valid Values: [0,…​,1]
Importance: medium
Dynamic update: cluster-wide

日志的最小比率和总日志率,达到符合清理条件的日志。如果还指定了 log.cleaner.max.compaction.lag.ms 或 log.cleaner.min.compaction.lag.ms 配置,则日志紧凑器会在满足 log.cleaner.min.action.low.se.action.low.se.action.low.action.lag.se.action.lag.se.action.lagms 时视为符合压缩的日志,(i)脏比率阈值达到了脏比率阈值,并且日志至少具有 log.cleaner.min.compms 记录。 或(ii)如果日志具有最多 log.cleaner.max.compaction.lag.ms 周期的脏(未编译)记录。

log.cleaner.min.compaction.lag.ms

Type: long
Default: 0
Valid Values: [0,…​]
Importance: medium
Dynamic update: cluster-wide

日志中消息保持未编译的最小时间。仅适用于被压缩的日志。

log.cleaner.threads

type: int
Default: 1
Valid Values: [0,…​]
Importance: medium
Dynamic update: cluster-wide

用于日志清理的后台线程数量。

log.cleanup.policy

type: list
Default: delete
Valid Values: [compact, delete]
Importance: medium
Dynamic update: cluster-wide

保留窗口以外的片段的默认清理策略。以逗号分隔的有效策略列表。有效策略有:"delete" 和 "compact"。

log.index.interval.bytes

type: int
Default: 4096 (4 kibibytes)
Valid Values: [0,…​]
Importance: medium
Dynamic update: cluster-wide

在偏移索引中添加条目的时间间隔。

log.index.size.max.bytes

Type: int
Default: 10485760 (10 mebibytes)
Valid Values: [4,…​]
Importance: medium
Dynamic update: cluster-wide

偏移索引的最大大小(以字节为单位)。

log.message.format.version

Type: string
Default: 3.0-IV theValid Values: [0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.10.0-IV0, 0.10.0-IV1, 0.10.1-IV0, 0.10.1-IV1, 0.10.1-IV2, 0.10.2-IV0, 0.11.0-IV0, 0.11.0-IV1, 0.11.0-IV2, 1.0-IV0, 1.1-IV0,
2.0-iv0, 2.0-iv1, 2.1-iv0, 2.1-iv1, 2.1-iv2, 2.2-iv0, 2.2-iv1, 2.3-iv1, 2.3-iv0, 2.4-iv1, 2.5-iv0, 2.6-iv0, 2.6-iv0, 2.7-iv0, 2.7-iv1, 2.7-iv2, 2.8-iv0, 2.8-iv1, 3.0-iv0, 3.0-iv1, 3.0-iv1, 3.0-iv1, 3.1-IV0, 3.2-IV0, 3.3-IV0, 3.3-IV1, 3.3-IV2, 3.3-IV3, 3.4-IV0]
Importance: medium
Dynamic update: read-only

指定代理用来将信息附加到日志中的消息格式版本。该值应该是有效的 MetadataVersion。一些示例为 0.8.2, 0.9.0.0, 0.10.0,检查 MetadataVersion 获取更多详细信息。通过设置特定的消息格式版本,用户正在认证磁盘上的所有现有消息都小于指定版本。设置这个值会错误地会导致带有旧版本的用户中断,因为它们将使用不理解的格式接收信息。

log.message.timestamp.difference.max.ms

Type: long
Default: 9223372036854775807
Valid Values: [0,…​]
Importance: medium
Dynamic update: cluster-wide

代理收到消息和消息中指定的时间戳时允许的最大差别。如果 log.message.timestamp.type=CreateTime,如果时间戳的区别超过这个阈值,则会拒绝消息。如果 log.message.timestamp.type=LogAppendTime。则允许的最大时间戳差异不会大于 log.retention.ms,以避免不必要的日志滚动。

log.message.timestamp.type

type: string
Default: CreateTime
Valid Values: [CreateTime, LogAppendTime]
Importance: medium
Dynamic update: cluster-wide

定义消息中的时间戳是消息创建时间还是日志附加时间。该值应该是 CreateTimeLogAppendTime

log.preallocate

Type: boolean
Default: false
Importance: medium
Dynamic update: cluster-wide

在创建新段时,应预分配文件?如果您在 Windows 上使用 Kafka,可能需要将其设置为 true。

log.retention.check.interval.ms

Type: long
Default: 300000 (5 minutes)
Valid Values: [1,…​]
Importance: medium
Dynamic update: read-only

日志清理器检查日志清理的频率(毫秒)检查是否有资格删除日志。

max.connection.creation.rate

type: int
Default: 2147483647
Valid Values: [0,…​]
Importance: medium
Dynamic update: cluster-wide

在代理中允许的最大连接创建率。监听器级别限制也可以通过使用监听程序前缀作为前缀来配置,例如 listener.name.internal.max.connection.creation.rate.Broker-wide 连接速率限制,则应根据代理容量配置侦听器限制,而应根据应用程序要求配置监听程序限制。如果达到监听器或代理限制,新的连接将会节流,但 inter-broker 侦听器除外。只有在达到监听器级速率限值时,inter-broker 侦听器的连接才会节流。

max.connections

type: int
Default: 2147483647
Valid Values: [0,…​]
Importance: medium
Dynamic update: cluster-wide

在代理中允许的最大连接数。除了使用 max.connections.per.ip 配置的每ip 限制外,还会应用此限制。监听器级别限制也可以通过使用监听器前缀作为配置名称的前缀来配置,例如 listener.name.internal.max.connections。应根据代理容量配置代理范围限制,而根据应用程序要求应配置监听程序限制。如果达到监听器或代理限制,则阻止新连接。即使达到代理范围的限制,也允许 inter-broker 侦听程序上的连接。在这种情况下,将关闭另一个侦听程序中最早使用的连接。

max.connections.per.ip

type: int
Default: 2147483647
Valid Values: [0,…​]
Importance: medium
Dynamic update: cluster-wide

从每个 ip 地址允许的最大连接数。如果使用 max.connections.per.ip.overrides 属性配置覆盖,则可以将其设置为 0。如果达到限制,则会丢弃来自 ip 地址的新连接。

max.connections.per.ip.overrides

type: string
Default: ""
Importance: medium
Dynamic update: cluster-wide

以逗号分隔的 per-ip 或 hostname 列表覆盖到默认的最大连接数。示例值为 "hostName:100,127.0.0.1:200"。

max.incremental.fetch.session.cache.slots

type: int
Default: 1000
Valid Values: [0,…​]
Importance: medium
Dynamic update: read-only

我们要维护的最大增量获取会话数。

num.partitions

type: int
Default: 1
Valid Values: [1,…​]
Importance: medium
Dynamic update: read-only

每个主题的默认日志分区数量。

password.encoder.old.secret

Type: password
Default: null
Importance: medium
Dynamic update: read-only

用于动态配置的编码密码的旧 secret。这只在更新 secret 时才需要。如果指定,所有动态编码的密码都会使用这个旧 secret 进行解码,并在代理启动时使用 password.encoder.secret 重新编码。

password.encoder.secret

Type: password
Default: null
Importance: medium
Dynamic update: read-only

用于为这个代理动态配置的编码密码的 secret。

principal.builder.class

type: class
Default: org.apache.kafka.common.security.authenticator.DefaultKafkaPrincipalBuilder
Importance: medium
Dynamic update: per-broker

实施 KafkaPrincipalBuilder 接口的类的完全限定名称,用于构建在授权期间使用的 KafkaPrincipal 对象。如果没有定义主体构建器,则默认行为取决于使用中的安全协议。对于 SSL 身份验证,主体将使用由 ssl.principal.mapping.rules 定义的规则(如果提供)与客户端证书进行区分名称;否则,如果不需要客户端身份验证,则主体名称将为 ANONYMOUS。对于 SASL 身份验证,主体将使用 sasl.kerberos.principal.to.local.rules 定义的规则派生,如果 GSSAPI 正在使用,则 SASL 身份验证 ID 则用于其他机制。对于 PLAINTEXT,主体将为 ANONYMOUS。

producer.purgatory.purge.interval.requests

type: int
Default: 1000
Importance: medium
Dynamic update: read-only

制作者请求的清除间隔(以请求数) purgatory。

queued.max.request.bytes

Type: long
Default: -\":\"Importance: medium
Dynamic update: read-only

在读取更多请求前允许的排队字节数。

replica.fetch.backoff.ms

type: int
Default: 1000 (1 second)
Valid Values: [0,…​]
Importance: medium
Dynamic update: read-only

获取分区错误发生时休眠时间。

replica.fetch.max.bytes

type: int
Default: 1048576 (1 mebibyte)
Valid Values: [0,…​]
Importance: medium
Dynamic update: read-only

尝试为每个分区获取的消息字节数。这不是绝对的最大值,如果 fetch 的第一个非空分区中的第一个记录批处理大于这个值,则记录批处理仍会返回,以确保可以进行进度。代理接受的最大记录批处理大小通过 message.max.bytes (broker config)或 max.message.bytes (topic config)定义。

replica.fetch.response.max.bytes

type: int
Default: 10485760 (10 mebibytes)
Valid Values: [0,…​]
Importance: medium
Dynamic update: read-only

整个获取响应的预期最大字节数。记录批量获取,如果获取的第一个非空分区中的第一个记录批处理大于这个值,则记录批处理仍会返回,以确保进行进度。因此,这不是绝对的最大值。代理接受的最大记录批处理大小通过 message.max.bytes (broker config)或 max.message.bytes (topic config)定义。

replica.selector.class

type: string
Default: null
Importance: medium
Dynamic update: read-only

实现 ReplicaSelector 的完全限定类名称。代理使用它来查找首选的读取副本。默认情况下,我们使用返回领导的实施。

reserved.broker.max.id

type: int
Default: 1000
Valid Values: [0,…​]
Importance: medium
Dynamic update: read-only

可用于 broker.id 的最大数。

sasl.client.callback.handler.class

type: class
Default: null
Importance: medium
Dynamic update: read-only

实现 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理器类的完全限定名称。

sasl.enabled.mechanisms

type: list
Default: GSSAPI
Importance: medium
Dynamic update: per-broker

Kafka 服务器中启用的 SASL 机制列表。列表中可以包含提供安全提供程序的任何机制。默认情况下仅启用 GSSAPI。

sasl.jaas.config

Type: password
Default: null
Importance: medium
Dynamic update: per-broker

用于 SASL 连接的 JAAS 登录上下文参数,其格式由 JAAS 配置文件使用的格式。JAAS 配置文件格式描述 在此处。值的格式是: loginModuleClass controlFlag (optionName=optionValue)*;。对于代理,配置必须在小写中带有监听前缀和 SASL 机制名称前缀。例如: listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule;.

sasl.kerberos.kinit.cmd

type: string
Default: /usr/bin/kinit
Importance: medium
Dynamic update: per-broker

Kerberos kinit 命令路径。

sasl.kerberos.min.time.before.relogin

Type: long
Default: 60000
Importance: medium
Dynamic update: per-broker

刷新尝试之间的登录线程睡眠时间。

sasl.kerberos.principal.to.local.rules

type: list
Default: DEFAULT
Importance: medium
Dynamic update: per-broker

从主体名称映射到短名称(通常是操作系统用户名)的规则列表。规则按顺序评估,第一个匹配主体名称的规则用于将其映射到短名称。列表中的任何后续规则都会被忽略。默认情况下,形式为 {username}/{hostname}@{REALM} 的主体名称映射到 {username}。有关格式的更多详细信息,请参阅安全 授权和 acl。请注意,如果 principal.builder.class 配置提供了 KafkaPrincipalBuilder 的扩展,则此配置会被忽略。

sasl.kerberos.service.name

type: string
Default: null
Importance: medium
Dynamic update: per-broker

Kafka 运行的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 配置中定义。

sasl.kerberos.ticket.renew.jitter

type: double
Default: 0.05
Importance: medium
Dynamic update: per-broker

添加到续订时间的随机 jitter 百分比。

sasl.kerberos.ticket.renew.window.factor

type: double
Default: 0.8
Importance: medium
Dynamic update: per-broker

登录线程会处于睡眠状态,直到最后一次刷新到票据到期时间的指定窗口因子被达到,此时它将尝试续订票据。

sasl.login.callback.handler.class

type: class
Default: null
Importance: medium
Dynamic update: read-only

实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理器类的完全限定名称。对于代理,登录回调处理器配置必须以监听器前缀和 SASL 机制名称作为前缀作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler。

sasl.login.class

type: class
Default: null
Importance: medium
Dynamic update: read-only

实现 Login 接口的类的完全限定名称。对于代理,登录配置必须在小写中带有监听前缀和 SASL 机制名称前缀。For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin.

sasl.login.refresh.buffer.seconds

Type: short
Default: 300
Importance: medium
Dynamic update: per-broker

刷新凭证时,凭证过期前要维护的缓冲区时间(以秒为单位)。如果刷新的过期时间比缓冲区秒数接近,则会移动刷新以尽可能多地维护缓冲区时间。法律值介于 0 到 3600 之间(1 小时);如果没有指定值,则使用默认值 300 (5 分钟)。如果它们总和超过凭证的剩余生命周期,则这个值和 sasl.login.refresh.min.period.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.min.period.seconds

Type: short
Default: 60
Importance: medium
Dynamic update: per-broker

在刷新凭证前,登录刷新线程需要最少的时间(以秒为单位)。法律值介于 0 到 900 (15 分钟);如果没有指定值,则使用默认值 60 (1 分钟)。如果其总和超过凭证的剩余生命周期,则这个值和 sasl.login.refresh.buffer.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.factor

type: double
Default: 0.8
Importance: medium
Dynamic update: per-broker

登录刷新线程将休眠,直到达到了与凭证生命周期相关的指定窗口因子,在此期间它将尝试刷新凭证。法律值介于 0.5 (50%)和 1.0 (100%)之间,如果未指定值,则使用默认值 0.8 (80%)。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.jitter

type: double
Default: 0.05
Importance: medium
Dynamic update: per-broker

与凭证生命周期相关的随机 jitter 的最大随机处理量,添加到登录刷新线程的睡眠时间中。法律值介于 0 到 0.25(25%)之间,如果没有指定值,则使用默认值 0.05(5%)。目前仅适用于 OAUTHBEARER。

sasl.mechanism.inter.broker.protocol

type: string
Default: GSSAPI
Importance: medium
Dynamic update: per-broker

用于代理间通信的 SASL 机制。默认为 GSSAPI。

sasl.oauthbearer.jwks.endpoint.url

type: string
Default: null
Importance: medium
Dynamic update: read-only

从中检索提供程序 JWKS (JSON Web Key Set) 的 OAuth/OIDC 供应商 URL。URL 可以是基于 HTTP (S)或基于文件的 URL。如果 URL 基于 HTTP (S),则 JWKS 数据将通过代理启动时配置的 URL 从 OAuth/OIDC 供应商中检索。所有 then-current 密钥都将缓存到代理上,用于传入的请求。如果为 JWT 收到身份验证请求,其中包含尚未在缓存中"kid"标头声明值,则 JWKS 端点将根据需要重新查询。但是,代理在每个 sasl.oauthbearer.jwks.endpoint.refresh.ms 毫秒中轮询 URL,以便在收到包含它们的 JWT 请求前使用任何即将刷新缓存。如果 URL 基于文件,代理将在启动时从配置的位置加载 JWKS 文件。如果 JWT 包含不在 JWKS 文件中的"kid"标头值,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.token.endpoint.url

type: string
Default: null
Importance: medium
Dynamic update: read-only

OAuth/OIDC 身份提供程序的 URL。如果 URL 基于 HTTP (S),则它是签发者的令牌端点 URL,请求将根据 sasl.jaas.config 中的配置登录。如果 URL 基于文件,它指定一个包含由 OAuth/OIDC 身份提供程序发布的访问令牌(在 JWT 序列化形式)的文件,以用于授权。

sasl.server.callback.handler.class

type: class
Default: null
Importance: medium
Dynamic update: read-only

实现 AuthenticateCallbackHandler 接口的 SASL 服务器回调处理器类的完全限定名称。服务器回调处理程序必须在小写中带有监听器前缀和 SASL 机制名称作为前缀。例如,listener.name.sasl_ssl.plain.sasl.server.callback.handler.class=com.example.CustomPlainCallbackHandler。

sasl.server.max.receive.size

type: int
Default: 524288
Importance: medium
Dynamic update: read-only

在初始 SASL 身份验证前和期间允许的最大接收大小。默认接收大小为 512KB。GSSAPI 将请求限制为 64K,但对于自定义 SASL 机制,我们默认允许 512KB。在实践中,PLAIN、SCRAM 和 OAUTH 机制可以使用非常小的限制。

security.inter.broker.protocol

Description: string
Default: PLAINTEXT
Valid Values: [PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL]
Importance: medium
Dynamic update: read-only

用于在代理之间进行通信的安全协议。有效值为: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL.这是一个同时设置这个和 inter.broker.listener.name 属性的错误。

socket.connection.setup.timeout.max.ms

Type: long
Default: 30000 (30 seconds)
Importance: medium
Dynamic update: read-only

客户端将等待套接字连接建立的最长时间。对于每个连续连接失败,连接设置超时将以指数级增长到此最大值。为避免连接失败,0.2 的随机因素将应用于超时,导致在计算值高于计算值的 20% 到 20% 之间的随机范围。

socket.connection.setup.timeout.ms

Type: long
Default: 10000 (10 秒)
Importance: medium
Dynamic update: read-only

客户端将等待套接字连接建立的时间。如果在超时前没有构建连接,客户端将关闭套接字频道。

socket.listen.backlog.size

type: int
Default: 50
Valid Values: [1,…​]
Importance: medium
Dynamic update: read-only

套接字上待处理连接的最大数量。在 Linux 中,您可能还需要相应地配置 somaxconntcp_max_syn_backlog 内核参数,以使配置生效。

ssl.cipher.suites

type: list
Default: ""
Importance: medium
Dynamic update: per-broker

密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下支持所有可用的密码套件。

ssl.client.auth

type: string
Default: none
Valid Values: [required, requested, none]
Importance: medium
Dynamic update: per-broker

配置 kafka 代理以请求客户端身份验证。以下设置很常见:

  • ssl.client.auth=required if set to required client authentication required.
  • ssl.client.auth=requested 意味着客户端身份验证是可选的。如果需要,如果设置此选项,客户端可以选择不提供有关其自身的身份验证信息
  • SSL.client.auth=none 意味着不需要客户端身份验证。
ssl.enabled.protocols

type: list
Default: TLSv1.2,TLSv1.3
Importance: medium
Dynamic update: per-broker

为 SSL 连接启用的协议列表。使用 Java 11 或更高版本 'TLSv1.2' 运行时,默认为 'TLSv1.2'。使用 Java 11 的默认值,如果客户端和服务器同时支持 TLSv1.3,则客户端和服务器将首选 TLSv1.3,否则将回退到 TLSv1.2(假设两者都至少支持 TLSv1.2)。这个默认值对于大多数情况来说应该可以正常工作。另请参阅 ssl.protocol 的配置文档。

ssl.key.password

Type: password
Default: null
Importance: medium
Dynamic update: per-broker

密钥存储文件或 'ssl.keystore.key' 中指定的 PEM 密钥中的私钥密码。

ssl.keymanager.algorithm

type: string
Default: SunX509
Importance: medium
Dynamic update: per-broker

用于 SSL 连接的密钥管理器工厂使用的算法。Default 值是为 Java 虚拟机配置的密钥管理器工厂算法。

ssl.keystore.certificate.chain

Type: password
Default: null
Importance: medium
Dynamic update: per-broker

使用由 'ssl.keystore.type" 指定的格式的证书链。默认 SSL 引擎工厂只支持带有 X.509 证书列表的 PEM 格式。

ssl.keystore.key

Type: password
Default: null
Importance: medium
Dynamic update: per-broker

使用 'ssl.keystore.type" 指定的格式的私钥。默认 SSL 引擎工厂只支持带有 PKCS#8 密钥的 PEM 格式。如果密钥加密,则必须使用 'ssl.key.password' 指定密钥密码。

ssl.keystore.location

type: string
Default: null
Importance: medium
Dynamic update: per-broker

密钥存储文件的位置。这是可选的,可用于客户端双向身份验证。

ssl.keystore.password

Type: password
Default: null
Importance: medium
Dynamic update: per-broker

密钥存储文件的存储密码。这适用于客户端,只有在配置了 'ssl.keystore.location' 时才需要。PEM 格式不支持密钥存储密码。

ssl.keystore.type

type: string
Default: JKS
Importance: medium
Dynamic update: per-broker

密钥存储文件的文件格式。这对客户端是可选的。默认 ssl.engine.factory.class 目前支持的值是 [JKS, PKCS12, PEM]。

ssl.protocol

type: string
Default: TLSv1.3
Importance: medium
Dynamic update: per-broker

用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更高版本 'TLSv1.2' 运行时,默认为 'TLSv1.3'。这个值应该适用于大多数用例。最近的 JVM 中的允许值为 'TLSv1.2' 和 'TLSv1.3'。'TLS', 'TLSv1.1', 'SSL', 'SSLv2' 和 'SSLv3' 可能在较旧的 JVM 中被支持,但由于已知的安全漏洞,不建议使用它们的使用。使用这个配置和 'ssl.enabled.protocols' 的默认值,如果服务器不支持 'TLSv1.3',客户端将降级为 'TLSv1.2'。如果此配置被设置为 'TLSv1.2',则客户端将不会使用 'TLSv1.3',即使它是 ssl.enabled.protocols 中的一个值,且服务器只支持 'TLSv1.3'。

ssl.provider

type: string
Default: null
Importance: medium
Dynamic update: per-broker

用于 SSL 连接的安全提供程序的名称。默认值为 JVM 的默认安全提供程序。

ssl.trustmanager.algorithm

type: string
Default: PKIX
Importance: medium
Dynamic update: per-broker

信任管理器工厂用于 SSL 连接的算法。Default 值是为 Java 虚拟机配置的信任管理器工厂算法。

ssl.truststore.certificates

Type: password
Default: null
Importance: medium
Dynamic update: per-broker

可信证书,格式为 'ssl.truststore.type'。默认 SSL 引擎工厂仅支持使用 X.509 证书使用 PEM 格式。

ssl.truststore.location

type: string
Default: null
Importance: medium
Dynamic update: per-broker

信任存储文件的位置。

ssl.truststore.password

Type: password
Default: null
Importance: medium
Dynamic update: per-broker

信任存储文件的密码。如果没有设置密码,则仍将使用配置的信任存储文件,但会禁用完整性检查。PEM 格式不支持信任存储密码。

ssl.truststore.type

type: string
Default: JKS
Importance: medium
Dynamic update: per-broker

信任存储文件的文件格式。默认 ssl.engine.factory.class 目前支持的值是 [JKS, PKCS12, PEM]。

zookeeper.clientCnxnSocket

type: string
Default: null
Importance: medium
Dynamic update: read-only

在使用 ZooKeeper 的 TLS 连接时,通常设置为 org.apache.zookeeper.ClientCnxnSocketNetty。覆盖通过同名 zookeeper.clientCnxnSocket 系统属性设置的任何显式值。

zookeeper.ssl.client.enable

type: boolean
Default: false
Importance: medium
Dynamic update: read-only

将客户端设置为在连接到 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.

zookeeper.ssl.keystore.location

type: string
Default: null
Importance: medium
Dynamic update: read-only

将客户端证书与 ZooKeeper 的 TLS 连接一起使用时的密钥存储位置。覆盖通过 zookeeper.ssl.keyStore.location 系统属性设置的任何显式值(请注意 camelCase)。

zookeeper.ssl.keystore.password

Type: password
Default: null
Importance: medium
Dynamic update: read-only

将客户端证书与 ZooKeeper 的 TLS 连接一起使用时,密钥存储密码。覆盖通过 zookeeper.ssl.keyStore.password 系统属性设置的任何显式值(请注意 camelCase)。请注意,zookeeper 不支持与密钥存储密码不同的密钥密码,因此请务必将密钥存储中的密钥密码设置为与密钥存储密码相同;否则,尝试连接 Zookeeper 将失败。

zookeeper.ssl.keystore.type

type: string
Default: null
Importance: medium
Dynamic update: read-only

将客户端证书与 ZooKeeper 的 TLS 连接一起使用时,密钥存储类型。覆盖通过 zookeeper.ssl.keyStore.type 系统属性设置的任何显式值(请注意 camelCase)。默认值 null 表示类型将根据密钥存储的文件名扩展名来自动探测。

zookeeper.ssl.truststore.location

type: string
Default: null
Importance: medium
Dynamic update: read-only

使用 TLS 连接到 ZooKeeper 时的 truststore 位置。覆盖通过 zookeeper.ssl.trustStore.location 系统属性设置的任何显式值(请注意 camelCase)。

zookeeper.ssl.truststore.password

Type: password
Default: null
Importance: medium
Dynamic update: read-only

使用 TLS 连接到 ZooKeeper 时的 truststore 密码。覆盖通过 zookeeper.ssl.trustStore.password 系统属性设置的任何显式值(请注意 camelCase)。

zookeeper.ssl.truststore.type

type: string
Default: null
Importance: medium
Dynamic update: read-only

使用 TLS 连接 ZooKeeper 时的 truststore 类型。覆盖通过 zookeeper.ssl.trustStore.type 系统属性设置的任何显式值(请注意 camelCase)。默认值 null 表示类型将根据信任存储的文件名扩展自动探测。

alter.config.policy.class.name

type: class
Default: null
Importance: low
Dynamic update: read-only

用于验证的 changes 配置策略类。该类应实施 org.apache.kafka.server.policy.AlterConfigPolicy 接口。

alter.log.dirs.replication.quota.window.num

type: int
Default: 11
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

要在内存中保留的示例数量会改变日志目录复制配额。

alter.log.dirs.replication.quota.window.size.seconds

type: int
Default: 1
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

每个样本的时间范围会改变日志目录复制配额。

authorizer.class.name

type: string
Default: ""
Valid Values: non-null string
Importance: low
Dynamic update: read-only

实现 org.apache.kafka.server.authorizer.Authorizer 接口的类的完全限定名称,代理将用于授权。

auto.include.jmx.reporter

Type: boolean
Default: true
Importance: low
Dynamic update: read-only

已弃用。即使没有在 metric.reporters 中列出,也自动包含 JmxReporter。此配置将在 Kafka 4.0 中删除,用户应改为将 org.apache.kafka.common.metrics.JmxReporter 包含在 metric.reporters 中,以便启用 JmxReporter。

client.quota.callback.class

type: class
Default: null
Importance: low
Dynamic update: read-only

实现 ClientQuotaCallback 接口的类的完全限定名称,用于决定应用到客户端请求的配额限制。默认情况下,应用存储在 ZooKeeper 中的 <user> 和 <client-id> 配额。对于任何给定请求,将应用与会话的用户主体和请求客户端 ID 匹配的最具体的配额。

connection.failed.authentication.delay.ms

type: int
Default: 100
Valid Values: [0,…​]
Importance: low
Dynamic update: read-only

失败验证的连接关闭延迟:这是关闭连接的时间(以毫秒为单位)将在身份验证失败时延迟。这必须配置为小于 connection.max.idle.ms 以防止连接超时。

controller.quorum.retry.backoff.ms

type: int
Default: 20
Importance: low
Dynamic update: read-only

尝试重试失败的请求到给定主题分区前等待的时间。这可避免在某些故障情况下在严格的循环中重复发送请求。

controller.quota.window.num

type: int
Default: 11
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

为控制器修改配额在内存中保留的示例数量。

controller.quota.window.size.seconds

type: int
Default: 1
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

控制器修改配额的每个示例的时间范围。

create.topic.policy.class.name

type: class
Default: null
Importance: low
Dynamic update: read-only

应该用于验证的 create topic 策略类。该类应实施 org.apache.kafka.server.policy.CreateTopicPolicy 接口。

delegation.token.expiry.check.interval.ms

Type: long
Default: 3600000 (1 小时)
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

扫描间隔以删除已过期的委托令牌。

kafka.metrics.polling.interval.secs

type: int
Default: 10
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

指标轮询间隔(以秒为单位)可在 kafka.metrics.reporters 实现中使用。

kafka.metrics.reporters

type: list
Default: ""
Importance: low
Dynamic update: read-only

用作 Yammer 指标定制报告器的类列表。报告者应该实现 kafka.metrics.KafkaMetricsReporter trait。如果客户端希望对自定义报告器公开 JMX 操作,则自定义报告程序还需要实施 MBean 特征来扩展 kafka.metrics.KafkaMetricsReporterMBean 特征,以便注册的 MBean 符合标准 MBean 约定。

listener.security.protocol.map

Description: string
Default: PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
Importance: low
Dynamic update: per-broker

侦听器名称和安全协议之间的映射。这必须定义使同一安全协议在多个端口或 IP 中可用。例如,即使两者都需要 SSL,也可以分隔内部和外部流量。与之相反,用户可以将命名为 INTERNAL 和 EXTERNAL 的监听程序定义为: INTERNAL:SSL,EXTERNAL:SSL。如所示,键和值用冒号隔开,映射条目则用逗号分隔。每个侦听器名称应该仅在映射中出现一次。可以通过向配置名称中添加规范化前缀(监听程序名称为小写)为各个监听程序配置不同的安全(SSL 和 SASL)设置。例如,要为 INTERNAL 侦听器设置不同的密钥存储,将设置名为 listener.name.internal.ssl.keystore.location 的配置。如果没有设置监听器名称的配置,则配置将回退到通用配置(如 ssl.keystore.location)。请注意,在 KRaft 中,如果不提供显式映射且没有使用其他安全协议,则假定从 controller.listener.names 定义的监听程序名称到 PLAINTEXT 的默认映射。

log.message.downconversion.enable

Type: boolean
Default: true
Importance: low
Dynamic update: cluster-wide

此配置控制是否启用了 down-conversion 消息格式来满足消费请求。当设置为 false 时,代理将不会对希望旧消息格式的消费者执行 down-conversion。对于来自较旧的客户端的消费请求,代理会以 UNSUPPORTED_VERSION 错误响应。此配置不适用于复制才能遵循的任何消息格式转换。

metadata.max.idle.interval.ms

type: int
Default: 500
Valid Values: [0,…​]
Importance: low
Dynamic update: read-only

此配置控制活跃控制器应该将 no-op 记录写入元数据分区的频率。如果值为 0,则不会将 no-op 记录附加到元数据分区中。默认值为 500。

metric.reporters

type: list
Default: ""
Importance: low
Dynamic update: cluster-wide

用作指标报告器的类列表。通过实施 org.apache.kafka.common.metrics.MetricsReporter 接口,可以插入新指标创建通知的类。JmxReporter 始终包含在注册 JMX 统计数据中。

metrics.num.samples

type: int
Default: 2
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

维护到计算指标的示例数量。

metrics.recording.level

type: string
Default: INFO
Importance: low
Dynamic update: read-only

指标的最高记录级别。

metrics.sample.window.ms

Type: long
Default: 30000 (30 seconds)
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

计算指标示例的时间窗口。

password.encoder.cipher.algorithm

type: string
Default: AES/CBC/PKCS5Padding
Importance: low
Dynamic update: read-only

用于动态配置的编码密码的 Cipher 算法。

password.encoder.iterations

type: int
Default: 4096
Valid Values: [1024,…​]
Importance: low
Dynamic update: read-only

用于动态配置的编码密码的迭代计数。

password.encoder.key.length

type: int
Default: 128
Valid Values: [8,…​]
Importance: low
Dynamic update: read-only

用于动态配置的编码密码的密钥长度。

password.encoder.keyfactory.algorithm

type: string
Default: null
Importance: low
Dynamic update: read-only

用于动态配置的编码密码的 SecretKeyFactory 算法。如果提供,则默认为 PBKDF2WithHmacSHA512 (如果可用),否则为 PBKDF2WithHmacSHA1。

producer.id.expiration.ms

type: int
Default: 86400000 (1 day)
Valid Values: [1,…​]
Importance: low
Dynamic update: cluster-wide

主题分区领导将在生成者 ID 过期前等待的时间。当与它们关联的事务仍在持续时,生成者 ID 不会过期。请注意,如果因为主题的保留设置删除了来自制作者 ID 的最后一个写入,则制作者 ID 可能会很快过期。将此值设置为比 delivery.timeout.ms 相同的或更高,有助于防止重试和防止消息重复期间过期,但默认值应该适合于大多数用例。

quota.window.num

type: int
Default: 11
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

为客户端配额保留在内存中的示例数量。

quota.window.size.seconds

type: int
Default: 1
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

客户端配额的每个示例的时间范围。

replication.quota.window.num

type: int
Default: 11
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

在内存中保留复制配额的示例数量。

replication.quota.window.size.seconds

type: int
Default: 1
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

复制配额的每个示例的时间范围。

sasl.login.connect.timeout.ms

type: int
Default: null
Importance: low
Dynamic update: read-only

(可选)外部身份验证供应商连接超时的值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。

sasl.login.read.timeout.ms

type: int
Default: null
Importance: low
Dynamic update: read-only

(可选)外部身份验证提供程序读取超时的值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。

sasl.login.retry.backoff.max.ms

Type: long
Default: 10000 (10 秒)
Importance: low
Dynamic update: read-only

(可选)值(可选)值,以毫秒为单位,登录尝试外部身份验证提供程序之间的最长等待时间。login 使用基于 sasl.login.retry.backoff.ms 设置的初始等待时间的 exponential backoff 算法,并在尝试通过 sasl.login.retry.backoff.max.ms 设置指定的最大等待长度之间以等待长度加倍。目前仅适用于 OAUTHBEARER。

sasl.login.retry.backoff.ms

Type: long
Default: 100
Importance: low
Dynamic update: read-only

(可选)值(可选)值,以毫秒为单位,用于登录尝试外部身份验证提供程序之间的初始等待。login 使用基于 sasl.login.retry.backoff.ms 设置的初始等待时间的 exponential backoff 算法,并在尝试通过 sasl.login.retry.backoff.max.ms 设置指定的最大等待长度之间以等待长度加倍。目前仅适用于 OAUTHBEARER。

sasl.oauthbearer.clock.skew.seconds

type: int
Default: 30
Importance: low
Dynamic update: read-only

(可选)值(以秒为单位)允许 OAuth/OIDC 身份提供程序和代理的时间之间的区别。

sasl.oauthbearer.expected.audience

type: list
Default: null
Importance: low
Dynamic update: read-only

(可选)代理的以逗号分隔的设置,用于验证为预期受众之一发布的 JWT。JWT 将检查是否有标准的 OAuth "aud" 声明,如果设置了这个值,代理将匹配 JWT 的"aud"声明中的值,以查看是否有完全匹配。如果没有匹配项,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.expected.issuer

type: string
Default: null
Importance: low
Dynamic update: read-only

(可选)代理用于验证 JWT 是由预期签发者创建的。JWT 将检查是否有标准的 OAuth"iss"声明,如果设置了这个值,代理将完全与 JWT 的"iss"声明中的内容匹配。如果没有匹配项,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.jwks.endpoint.refresh.ms

Type: long
Default: 3600000 (1 小时)
Importance: low
Dynamic update: read-only

(可选)值(可选)代理在刷新其 JWKS (JSON Web Key Set)缓存之间等待的时间(以毫秒为单位),其中包含验证 JWT 签名的密钥。

sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms

Type: long
Default: 10000 (10 秒)
Importance: low
Dynamic update: read-only

(可选)值(可选)值(以毫秒为单位),尝试从外部身份验证供应商检索 JWKS (JSON Web Key Set)之间的最长等待时间。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待时间,在尝试达到由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置指定的最大等待长度之间会重复等待长度。

sasl.oauthbearer.jwks.endpoint.retry.backoff.ms

Type: long
Default: 100
Importance: low
Dynamic update: read-only

(可选)值(可选)值,以毫秒为单位,用于来自外部身份验证提供程序的 JWKS (JSON Web Key Set)检索尝试。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待时间,在尝试达到由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置指定的最大等待长度之间会重复等待长度。

sasl.oauthbearer.scope.claim.name

type: string
Default: scope
Importance: low
Dynamic update: read-only

范围的 OAuth 声明通常命名为"scope",但这(可选)设置可以提供与 JWT 有效负载声明中包含的范围使用不同的名称,如果 OAuth/OIDC 供应商对该声明使用不同的名称。

sasl.oauthbearer.sub.claim.name

type: string
Default: sub
Importance: low
Dynamic update: read-only

主题的 OAuth 声明通常名为"sub",但这(可选)设置可以提供与 JWT 有效负载声明中包含的主题使用不同的名称,如果 OAuth/OIDC 供应商对该声明使用不同的名称。

security.providers

type: string
Default: null
Importance: low
Dynamic update: read-only

可配置的创建者类列表,每个都返回实施安全算法的供应商。这些类应该实施 org.apache.kafka.common.security.auth.SecurityProviderCreator 接口。

ssl.endpoint.identification.algorithm

type: string
Default: https
Importance: low
Dynamic update: per-broker

使用服务器证书验证服务器主机名的端点标识算法。

ssl.engine.factory.class

type: class
Default: null
Importance: low
Dynamic update: per-broker

用于提供 SSLEngine 对象的 org.apache.kafka.common.security.auth.SslEngineFactory 类型的类。默认值为 org.apache.kafka.common.security.ssl.DefaultSslEngineFactory。

ssl.principal.mapping.rules

type: string
Default: DEFAULT
Importance: low
Dynamic update: read-only

用于从客户端证书到短名称的可分辨名称的规则列表。规则按顺序评估,第一个匹配主体名称的规则用于将其映射到短名称。列表中的任何后续规则都会被忽略。默认情况下,区分 X.500 证书的名称将是主体。有关格式的更多详细信息,请参阅安全 授权和 acl。请注意,如果 principal.builder.class 配置提供了 KafkaPrincipalBuilder 扩展,则此配置将被忽略。

ssl.secure.random.implementation

type: string
Default: null
Importance: low
Dynamic update: per-broker

用于 SSL 加密操作的 SecureRandom PRNG 实现。

transaction.abort.timed.out.transaction.cleanup.interval.ms

type: int
Default: 10000 (10 秒)
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

回滚超时事务的时间间隔。

transaction.remove.expired.transaction.cleanup.interval.ms

type: int
Default: 3600000 (1 小时)
Valid Values: [1,…​]
Importance: low
Dynamic update: read-only

删除因为 transactional.id.expiration.ms 传递而过期的事务的时间间隔。

zookeeper.ssl.cipher.suites

type: list
Default: null
Importance: low
Dynamic update: read-only

指定 ZooKeeper TLS 协商(csv)中使用的启用的密码套件。覆盖通过 zookeeper.ssl.ciphersuites 系统属性明确设置的值(注意单个单词 "ciphersuites")。默认值 null 表示启用的密码套件列表由使用的 Java 运行时决定。

zookeeper.ssl.crl.enable

type: boolean
Default: false
Importance: low
Dynamic update: read-only

指定是否在 ZooKeeper TLS 协议中启用证书撤销列表。覆盖通过 zookeeper.ssl.crl 系统属性设置的任何显式值(请注意较短的名称)。

zookeeper.ssl.enabled.protocols

type: list
Default: null
Importance: low
Dynamic update: read-only

指定 ZooKeeper TLS 协商(csv)中启用的协议。覆盖通过 zookeeper.ssl.enabledProtocols 系统属性设置的任何显式值(请注意 camelCase)。默认值 null 表示启用的协议将是 zookeeper.ssl.protocol 配置属性的值。

zookeeper.ssl.endpoint.identification.algorithm

type: string
Default: HTTPS
Importance: low
Dynamic update: read-only

指定是否在 ZooKeeper TLS 协商过程中启用主机名验证,使用(不区分大小写)"https"表示 ZooKeeper 主机名验证已启用,并明确的空白值代表禁用它(禁用测试)。显式值覆盖通过 zookeeper.ssl.hostnameVerification 系统属性设置的任何 "true" 或 "false" 值(请注意不同的名称和值;true 表示 https 和 false 表示空白)。

zookeeper.ssl.ocsp.enable

type: boolean
Default: false
Importance: low
Dynamic update: read-only

指定是否在 ZooKeeper TLS 协议中启用在线证书状态协议。覆盖通过 zookeeper.ssl.ocsp 系统属性设置的任何显式值(请注意较短的名称)。

zookeeper.ssl.protocol

type: string
Default: TLSv1.2
Importance: low
Dynamic update: read-only

指定 ZooKeeper TLS 协商中使用的协议。显式值覆盖通过同名 zookeeper.ssl.protocol 系统属性设置的任何值。

第 2 章 主题配置属性

cleanup.policy

type: list
Default: delete
Valid Values: [compact, delete]
Server Default Property: log.cleanup.policy
Importance: medium

此配置指定用于日志片段的保留策略。当达到保留时间或大小限制时,"删除"策略(默认值)将丢弃旧的片段。"compact"策略将 启用日志压缩,它会保留每个密钥的最新值。也可以在逗号分隔列表中指定这两个策略(如 "delete,compact")。在这种情况下,旧片段将按保留时间和大小配置丢弃,而保留片段将被压缩。

compression.type

type : string
Default: producer
Valid Values: [uncompressed, zstd, lz4, snappy, gzip, producer]
Server Default Property: compression.type
Importance: medium

指定给定主题的最终压缩类型。此配置接受标准压缩代码('gzip', 'snappy', 'lz4', 'zstd')。它还接受 'uncompressed',它相当于没有压缩;而 'producer' 意味着保留由制作者设置的原始压缩代码。

delete.retention.ms

Type: long
Default: 86400000 (1 day)
Valid Values: [0,…​]
Server Default Property: log.cleaner.delete.retention.ms
Importance: medium

日志压缩主题保留 delete tombstone 标记的时间长度。此设置还赋予一个时间绑定,消费者在从偏移 0 开始时必须完成读取,以确保它们获得最终阶段的有效快照(否则可以收集到mbstones,然后再完成其扫描)。

file.delete.delay.ms

Type: long
Default: 60000 (1 minute)
Valid Values: [0,…​]
Server Default Property: log.segment.delete.delay.ms
Importance: medium

从文件系统删除文件前等待的时间。

flush.messages

Type: long
Default: 9223372036854775807
Valid Values: [1,…​]
Server Default Property: log.flush.interval.messages
Importance: medium

此设置允许指定间隔,我们将强制将写入日志的 fsync 数据。例如,如果它被设置为 1,则每个消息后都会 fsync ;如果它是 5,我们会在每五个消息后 fsync。通常,我们建议您不要设置它,并将复制用于持久性并允许操作系统的后台清除功能,因为它效率更高。此设置可以基于每个主题覆盖(请参阅 每个主题配置部分)。

flush.ms

Type: long
Default: 9223372036854775807
Valid Values: [0,…​]
Server Default Property: log.flush.interval.ms
Importance: medium

此设置允许指定时间间隔,我们将强制将写入日志的 fsync 数据。例如,如果它被设置为 1000,则我们会在 1000 毫秒后执行 fsync。通常,我们建议您不要设置它,并将复制用于持久性并允许操作系统的后台清除功能,因为它效率更高。

follower.replication.throttled.replicas

type: list
Default: ""
Valid Values: [partitionId]:[brokerId],[partitionId]:[brokerId],…​
Server Default Property: follower.replication.throttled.replicas
Importance: medium

在后续一侧应该节流日志复制的副本列表。该列表应该以 [PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:…​ 或 wildcard '*' 的形式描述一组副本,可用于节流这个主题的所有副本。

index.interval.bytes

type: int
Default: 4096 (4 kibibytes)
Valid Values: [0,…​]
Server Default Property: log.index.interval.bytes
Importance: medium

此设置控制 Kafka 在其偏移索引中添加索引条目的频率。默认设置可确保我们大约每 4096 字节对消息进行索引。通过更多索引,读取可以更接近日志中的确切位置,但可以使索引更大。您可能不需要更改此设置。

leader.replication.throttled.replicas

type: list
Default: ""
Valid Values: [partitionId]:[brokerId],[partitionId]:[brokerId],…​
Server Default Property: leader.replication.throttled.replicas
Importance: medium

在领导端,日志复制应该节流的副本列表。该列表应该以 [PartitionId]:[BrokerId],[PartitionId]:[BrokerId]:…​ 或 wildcard '*' 的形式描述一组副本,可用于节流这个主题的所有副本。

max.compaction.lag.ms

Type: long
Default: 9223372036854775807
Valid Values: [1,…​]
Server Default Property: log.cleaner.max.compaction.lag.ms
Importance: medium

在日志中,消息可以保持无法压缩的最长时间。仅适用于被压缩的日志。

max.message.bytes

type: int
Default: 1048588
Valid Values: [0,…​]
Server Default Property: message.max.bytes
Importance: medium

Kafka 允许的最大记录批处理大小(如果启用压缩,则在压缩后)。如果增加且有 0.10.2 旧的消费者,则用户的获取大小也必须增加,以便他们可以获取大量记录批处理。在最新的消息格式版本中,记录始终分组到批处理中,以提高效率。在以前的消息格式版本中,未压缩的记录不会分组到批处理中,此限制仅适用于这种情况的单个记录。

message.format.version

Type: string
Default: 3.0-IV theValid Values: [0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.10.0-IV0, 0.10.0-IV1, 0.10.1-IV0, 0.10.1-IV1, 0.10.1-IV2, 0.10.2-IV0, 0.11.0-IV0, 0.11.0-IV1, 0.11.0-IV2, 1.0-IV0, 1.1-IV0,
2.0-iv0, 2.0-iv1, 2.1-iv0, 2.1-iv1, 2.1-iv2, 2.2-iv0, 2.2-iv1, 2.3-iv1, 2.3-iv0, 2.4-iv1, 2.5-iv0, 2.6-iv0, 2.6-iv0, 2.7-iv0, 2.7-iv1, 2.7-iv2, 2.8-iv0, 2.8-iv1, 3.0-iv0, 3.0-iv1, 3.0-iv1, 3.0-iv1, 3.1-IV0, 3.2-IV0, 3.3-IV0, 3.3-IV1, 3.3-IV2, 3.3-IV3, 3.4-IV0]
Server Default Property: log.message.format.version
Importance: medium

[DEPRECATED] 指定代理将用来将消息附加到日志中的消息格式版本。如果 inter.broker.protocol.version3.0 或更高版本,则此配置的值总是被假定为 3.0。否则,该值应该是有效的 ApiVersion。一些示例有: 0.10.0、1.1、2.8、3.0。通过设置特定的消息格式版本,用户正在认证磁盘上的所有现有消息都小于指定版本。设置这个值会错误地会导致带有旧版本的用户中断,因为它们将使用不理解的格式接收信息。

message.timestamp.difference.max.ms

Type: long
Default: 9223372036854775807
Valid Values: [0,…​]
Server Default Property: log.message.timestamp.difference.max.ms
Importance: medium

代理收到消息和消息中指定的时间戳时允许的最大差别。如果 message.timestamp.type=CreateTime,如果时间戳的区别超过这个阈值,则会拒绝消息。如果 message.timestamp.type=LogAppendTime,则忽略此配置。

message.timestamp.type

Description: string
Default: CreateTime
Valid Values: [CreateTime, LogAppendTime]
Server Default Property: log.message.timestamp.type
Importance: medium

定义消息中的时间戳是消息创建时间还是日志附加时间。该值应该是 CreateTimeLogAppendTime

min.cleanable.dirty.ratio

Type: double
Default: 0.5
Valid Values: [0,…​,1]
Server Default Property: log.cleaner.min.cleanable.ratio
Importance: medium

此配置控制日志紧凑程序将尝试清理日志的频率(假设启用了 日志压缩 )。默认情况下,我们将避免清理日志超过 50% 的日志。这种比例使日志空间达到最大的空间(50% 最多 50% 的日志重复)。较高的比率将意味着更短、效率更高的清理,但意味着日志中更多浪费空间。如果同时指定了 max.compaction.lag.ms 或 min.compaction.lag.ms 配置,则日志压缩器会在满足脏比率阈值时马上考虑日志有资格进行压缩:(i)脏比率阈值,并且日志至少在 min.compaction.lag.ms 持续时间内具有脏(不编译)记录。 或(ii)如果日志具有最多 max.compaction.lag.ms 周期的脏(不解释)记录。

min.compaction.lag.ms

Type: long
Default: 0
Valid Values: [0,…​]
Server Default Property: log.cleaner.min.compaction.lag.ms
Importance: medium

日志中消息保持未编译的最小时间。仅适用于被压缩的日志。

min.insync.replicas

type: int
Default: 1
Valid Values: [1,…​]
Server Default Property: min.insync.replicas
Importance: medium

当制作者将 acks 设为 "all" (或 "-1")时,此配置指定必须确认写入的最小副本数。如果无法满足这个最小值,则制作者会引发异常( NotEnoughReplicas 或 NotEnoughReplicasAfterAppend)。当一起使用时,min.insync.replicasacks 允许您强制执行更大的持久性保证。典型的场景是创建包含复制原因 3 的主题,将 min.insync.replicas 设置为 2,并使用 acks of "all" 生成。这将确保,当大多数副本没有收到写入时,生产者会引发异常。

preallocate

Type: boolean
Default: false
Server Default Property: log.preallocate
Importance: medium

在创建新日志片段时,如果我们应该预先分配磁盘上的文件,则为 true。

retention.bytes

Type: long
Default: -\":\"Server Default Property: log.retention.bytes
Importance: medium

此配置控制分区(由日志片段组成)的最大大小,然后再丢弃旧日志片段以释放空间(如果我们使用"删除"保留策略)。默认情况下,没有限制时间限制。由于此限制在分区级别强制实施,因此请将分区数量乘以要计算字节的主题保留数。

retention.ms

Type: long
Default: 604800000 (7 days)
Valid Values: [-1,…​]
Server Default Property: log.retention.ms
Importance: medium

此配置控制我们在使用"删除"保留策略前,在丢弃旧日志片段前保留一个日志的最大时间,以便释放空间。这代表了一个 SLA,了解消费者如何读取其数据。如果设置为 -1,则不会应用时间限制。

segment.bytes

Description: int
Default: 1073741824 (1 gibibyte)
Valid Values: [14,…​]
Server Default Property: log.segment.bytes
Importance: medium

此配置控制日志的片段文件大小。保留和清理始终一次执行一个文件,因此较大的片段大小意味着较少的文件,但对保留进行更精细的控制。

segment.index.bytes

type: int
Default: 10485760 (10 mebibytes)
Valid Values: [4,…​]
Server Default Property: log.index.size.max.bytes
Importance: medium

此配置控制将偏移映射到文件位置的索引大小。我们预先分配这个索引文件,仅在日志推出后缩小该文件。您通常不需要更改此设置。

segment.jitter.ms

Type: long
Default: 0
Valid Values: [0,…​]
Server Default Property: log.roll.jitter.ms
Importance: medium

从调度的片段汇总中减去了最大随机 jitter,以避免出现片段滚动的限制。

segment.ms

Type: long
Default: 604800000 (7 days)
Valid Values: [1,…​]
Server Default Property: log.roll.ms
Importance: medium

此配置控制在之后 Kafka 将强制日志滚动的时间,即使段文件没有满,以确保保留可以删除或压缩旧数据。

unclean.leader.election.enable

type: boolean
Default: false
Server Default Property: unclean.leader.election.enable
Importance: medium

指明是否使 ISR 集中的副本选择为最后的手段,即使这样做可能会导致数据丢失。

message.downconversion.enable

Description: boolean
Default: true
Server Default Property: log.message.downconversion.enable
Importance: low

此配置控制是否启用了 down-conversion 消息格式来满足消费请求。当设置为 false 时,代理将不会对希望旧消息格式的消费者执行 down-conversion。对于来自较旧的客户端的消费请求,代理会以 UNSUPPORTED_VERSION 错误响应。此配置不适用于复制才能遵循的任何消息格式转换。

第 3 章 消费者配置属性

key.deserializer

type: class
Importance: high

实施 org.apache.kafka.common.serialization.Deserializer 接口的密钥的反序列化类。

value.deserializer

type: class
Importance: high

deserializer 类用于实施 org.apache.kafka.common.serialization.Deserializer 接口的值。

bootstrap.servers

type: list
Default: ""
Valid Values: non-null string
Importance: high

用于建立到 Kafka 集群的初始连接的主机/端口对列表。客户端将使用此处指定的服务器的所有服务器进行引导 - 此列表仅影响用于发现整套服务器的初始主机。此列表应该采用 host1:port1,host2:port2,…​ 的形式。由于这些服务器仅用于初始连接来发现完整的群集成员(这可能会动态更改),此列表不需要包含完整的服务器集合(但在服务器停机的情况下可能需要多个服务器)。

fetch.min.bytes

type: int
Default: 1
Valid Values: [0,…​]
Importance: high

服务器应该为获取请求返回的最小数据量。如果数据不足,请求将在回答请求之前等待大量数据。默认设置为 1 字节表示,当单个字节数据可用或获取请求超时等待数据到达时,会马上处理获取请求。把它设置为大于 1 的某些内容将导致服务器等待大量数据累积,这会以一些额外的延迟的成本提高服务器吞吐量。

group.id

Type: string
Default: null
Importance: high

标识此消费者所属的消费者组的唯一字符串。如果消费者使用 subscription (topic) 或基于 Kafka 的偏移管理策略,则需要此属性。

heartbeat.interval.ms

Type: int
Default: 3000 (3 秒)
Importance: high

使用 Kafka 的组管理功能时,心跳到消费者协调器之间的预期时间。心跳用于确保消费者的会话保持活跃状态,并在新消费者加入或离开组时进行重新平衡。该值必须小于 session.timeout.ms,但设置的值通常不应超过这个值的 1/3。它甚至可以降低以控制正常重新平衡的预期时间。

max.partition.fetch.bytes

type: int
Default: 1048576 (1 mebibyte)
Valid Values: [0,…​]
Importance: high

服务器将返回的每个分区的最大数据量。记录由消费者批量获取。如果获取的第一个非空分区中的第一个记录批处理大于这个限制,则仍然会返回批处理,以确保消费者能够进行进度。代理接受的最大记录批处理大小通过 message.max.bytes (broker config)或 max.message.bytes (topic config)定义。如需限制消费者请求大小,请参阅 fetch.max.bytes。

session.timeout.ms

Type: int
Default: 45000 (45 秒)
Importance: high

使用 Kafka 组管理功能时用于检测客户端故障的超时。客户端发送定期心跳以指明其存活度到代理。如果在此会话超时前代理没有接收心跳,则代理将从组中删除此客户端并启动重新平衡。请注意,该值必须在允许范围内,由 group.min.session.timeout.msgroup.max.session.timeout.ms 进行配置。

ssl.key.password

Type: password
Default: null
Importance: high

密钥存储文件或 'ssl.keystore.key' 中指定的 PEM 密钥中的私钥密码。

ssl.keystore.certificate.chain

Type: password
Default: null
Importance: high

使用由 'ssl.keystore.type" 指定的格式的证书链。默认 SSL 引擎工厂只支持带有 X.509 证书列表的 PEM 格式。

ssl.keystore.key

Type: password
Default: null
Importance: high

使用 'ssl.keystore.type" 指定的格式的私钥。默认 SSL 引擎工厂只支持带有 PKCS#8 密钥的 PEM 格式。如果密钥加密,则必须使用 'ssl.key.password' 指定密钥密码。

ssl.keystore.location

Type: string
Default: null
Importance: high

密钥存储文件的位置。这是可选的,可用于客户端双向身份验证。

ssl.keystore.password

Type: password
Default: null
Importance: high

密钥存储文件的存储密码。这适用于客户端,只有在配置了 'ssl.keystore.location' 时才需要。PEM 格式不支持密钥存储密码。

ssl.truststore.certificates

Type: password
Default: null
Importance: high

可信证书,格式为 'ssl.truststore.type'。默认 SSL 引擎工厂仅支持使用 X.509 证书使用 PEM 格式。

ssl.truststore.location

Type: string
Default: null
Importance: high

信任存储文件的位置。

ssl.truststore.password

Type: password
Default: null
Importance: high

信任存储文件的密码。如果没有设置密码,则仍将使用配置的信任存储文件,但会禁用完整性检查。PEM 格式不支持信任存储密码。

allow.auto.create.topics

Type: boolean
Default: true
Importance: medium

当订阅或分配主题时,允许在代理上自动创建主题。只有在代理允许使用 auto.create.topics.enable 代理配置时,才会自动创建订阅的主题。当使用早于 0.11.0 的代理时,此配置必须设为 false

auto.offset.reset

type: string
Default: latest
Valid Values: [latest, earliest, none]
Importance: medium

Kafka 中没有初始偏移,或者当前偏移没有在服务器上(例如,因为删除了数据)时,应该做什么:

  • earliest:自动将偏移重置为最早的偏移量
  • latest :自动将偏移重置为最新的偏移量
  • none :为消费者的组找不到以前的偏移时,向消费者抛出异常
  • 其它内容:向消费者抛出异常。
client.dns.lookup

type: string
Default: use_all_dns_ips
Valid Values: [use_all_dns_ips, resolve_canonical_bootstrap_servers_only]
Importance: medium

控制客户端如何使用 DNS 查找。如果设置为 use_all_dns_ips,按顺序连接到每个返回的 IP 地址,直到成功建立连接为止。断开连接后,会使用下一个 IP。使用了所有 IP 后,客户端会再次从主机名( JVM 和 OS 缓存 DNS 名称查找)解析 IP 地址。如果设置为 resolve_canonical_bootstrap_servers_only,请将每个 bootstrap 地址解析为规范名称列表。在 bootstrap 阶段后,这与 use_all_dns_ips 相同。

connections.max.idle.ms

Type: long
Default: 540000 (9 分钟)
Importance: medium

在此配置指定的毫秒数后关闭闲置连接。

default.api.timeout.ms

type: int
Default: 60000 (1 minute)
Valid Values: [0,…​]
Importance: medium

指定客户端 API 的超时时间(以毫秒为单位)。此配置用作没有指定 timeout 参数的所有客户端操作的默认超时时间。

enable.auto.commit

Type: boolean
Default: true
Importance: medium

如果为 true,使用者偏移将定期在后台提交。

exclude.internal.topics

Type: boolean
Default: true
Importance: medium

订阅中排除了与订阅模式匹配的内部主题。始终可以显式订阅一个内部主题。

fetch.max.bytes

type: int
Default: 52428800 (50 mebibytes)
Valid Values: [0,…​]
Importance: medium

服务器为获取请求返回的最大数据量。记录由消费者批量获取,如果获取的第一个非空分区中的第一个记录批处理大于这个值,则记录批处理仍会返回,以确保消费者能够进行进度。因此,这不是绝对的最大值。代理接受的最大记录批处理大小通过 message.max.bytes (broker config)或 max.message.bytes (topic config)定义。请注意,消费者并行执行多个获取。

group.instance.id

type: string
Default: null
Valid Values: non-empty string
Importance: medium

最终用户提供的使用者实例的唯一标识符。仅允许非空字符串。如果设置,使用者将被视为静态成员,这意味着任何消费者组中只允许具有此 ID 的一个实例。这可以与更大的会话超时结合使用,以避免由临时不可用(如进程重启)导致的组重新平衡。如果没有设置,使用者将作为动态成员加入组,这是传统的行为。

isolation.level

type: string
Default: read_uncommitted
Valid Values: [read_committed, read_uncommitted]
Importance: medium

控制如何读取事务编写的消息。如果设置为 read_committed,则 consumer.poll ()将仅返回已提交的事务消息。如果设置为 read_uncommitted (默认值),consumer.poll ()将返回所有消息,即使已中止的事务消息。非事务处理信息将在任一模式中无条件返回。

消息始终以偏移顺序返回。因此,在 read_committed 模式中,consumer.poll () 将只返回到最后一个稳定偏移(LSO),即小于第一个打开事务偏移偏移的偏移值。特别是任何属于持续事务的消息后,直到相关的事务完成为止。因此,当进行 Iflight 事务时,read_committed 用户将无法读取到高水位线。

 Further, when in `read_committed` the seekToEnd method will return the LSO
.
max.poll.interval.ms

type: int
Default: 300000 (5 minutes)
Valid Values: [1,…​]
Importance: medium

使用消费者组管理时轮询()调用之间的最大延迟。这会在获取更多记录前,在消费者闲置的时间上绑定上。如果在此超时过期之前没有调用 poll (),那么消费者将被视为失败,并且组将重新平衡,以便将分区重新分配给另一个成员。对于使用达到此超时的非null group.instance.id 的用户,不会立即重新分配分区。相反,消费者会在 session.timeout.ms 过期后再重新分配发送心跳和分区。这会镜像已关闭的静态使用者的行为。

max.poll.records

type: int
Default: 500
Valid Values: [1,…​]
Importance: medium

在要 poll ()的单个调用中返回的最大记录数。请注意,max.poll.records 不会影响底层获取行为。消费者将缓存来自每个获取请求的记录,并以递增方式从每个轮询返回它们。

partition.assignment.strategy

type: list
Default: class org.apache.kafka.clients.consumer.RangeAssignor,class org.apache.kafka.clients.consumer.CorphanStickyAssignor
Valid Values: non-null string
Importance: medium

使用组管理时,按首选顺序排列的类名称或类类型列表,客户端将使用它们在消费者实例之间分发分区所有权。可用的选项有:

  • org.apache.kafka.clients.consumer.RangeAssignor: 按主题分配分区。
  • org.apache.kafka.clients.consumer.RoundRobinAssignor :以轮循方式将分区分配给消费者。
  • org.apache.kafka.clients.consumer.StickyAssignor: Guarantees 分配一个最大均衡的分配,同时保留尽可能多的现有分区分配。
  • org.apache.kafka.clients.consumer.CooperativeStickyAssignor: Follows same StickyAssignor 逻辑,但允许合作重新平衡。

    默认分配器为 [RangeAssignor,CooperativeStickyAssignor],它将默认使用 RangeAssignor,但允许升级到 CooperativeStickyAssignor,只有一个滚动禁止从列表中删除 RangeAssignor。

    通过实施 org.apache.kafka.clients.consumer.ConsumerPartitionAssignor 接口,您可以插入自定义分配策略。

receive.buffer.bytes

type: int
Default: 65536 (64 kibibytes)
Valid Values: [-1,…​]
Importance: medium

读取数据时使用的 TCP 接收缓冲区的大小(SO_RCVBUF)。如果值为 -1,则会使用 OS 默认值。

request.timeout.ms

type: int
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: medium

配置控制客户端等待请求响应的最长时间。如果响应在超时前收到,客户端会在必要时重新发送请求,或者在重试已耗尽时失败请求。

sasl.client.callback.handler.class

Type: class
Default: null
Importance: medium

实现 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理器类的完全限定名称。

sasl.jaas.config

Type: password
Default: null
Importance: medium

用于 SASL 连接的 JAAS 登录上下文参数,其格式由 JAAS 配置文件使用的格式。JAAS 配置文件格式描述 在此处。值的格式是: loginModuleClass controlFlag (optionName=optionValue)*;。对于代理,配置必须在小写中带有监听前缀和 SASL 机制名称前缀。例如: listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule;.

sasl.kerberos.service.name

Type: string
Default: null
Importance: medium

Kafka 运行的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 配置中定义。

sasl.login.callback.handler.class

Type: class
Default: null
Importance: medium

实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理器类的完全限定名称。对于代理,登录回调处理器配置必须以监听器前缀和 SASL 机制名称作为前缀作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler。

sasl.login.class

Type: class
Default: null
Importance: medium

实现 Login 接口的类的完全限定名称。对于代理,登录配置必须在小写中带有监听前缀和 SASL 机制名称前缀。For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin.

sasl.mechanism

type: string
Default: GSSAPI
Importance: medium

用于客户端连接的 SASL 机制。这可能是提供安全提供程序的任何机制。GSSAPI 是默认机制。

sasl.oauthbearer.jwks.endpoint.url

Type: string
Default: null
Importance: medium

从中检索提供程序 JWKS (JSON Web Key Set) 的 OAuth/OIDC 供应商 URL。URL 可以是基于 HTTP (S)或基于文件的 URL。如果 URL 基于 HTTP (S),则 JWKS 数据将通过代理启动时配置的 URL 从 OAuth/OIDC 供应商中检索。所有 then-current 密钥都将缓存到代理上,用于传入的请求。如果为 JWT 收到身份验证请求,其中包含尚未在缓存中"kid"标头声明值,则 JWKS 端点将根据需要重新查询。但是,代理在每个 sasl.oauthbearer.jwks.endpoint.refresh.ms 毫秒中轮询 URL,以便在收到包含它们的 JWT 请求前使用任何即将刷新缓存。如果 URL 基于文件,代理将在启动时从配置的位置加载 JWKS 文件。如果 JWT 包含不在 JWKS 文件中的"kid"标头值,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.token.endpoint.url

Type: string
Default: null
Importance: medium

OAuth/OIDC 身份提供程序的 URL。如果 URL 基于 HTTP (S),则它是签发者的令牌端点 URL,请求将根据 sasl.jaas.config 中的配置登录。如果 URL 基于文件,它指定一个包含由 OAuth/OIDC 身份提供程序发布的访问令牌(在 JWT 序列化形式)的文件,以用于授权。

security.protocol

Type: string
Default: PLAINTEXT
Valid Values: [PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL]
Importance: medium

用于与代理通信的协议。有效值为: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL.

send.buffer.bytes

type: int
Default: 131072 (128 kibibytes)
Valid Values: [-1,…​]
Importance: medium

在发送数据时使用的 TCP 发送缓冲区的大小(SO_SNDBUF)。如果值为 -1,则会使用 OS 默认值。

socket.connection.setup.timeout.max.ms

Type: long
Default: 30000 (30 秒)
Importance: medium

客户端将等待套接字连接建立的最长时间。对于每个连续连接失败,连接设置超时将以指数级增长到此最大值。为避免连接失败,0.2 的随机因素将应用于超时,导致在计算值高于计算值的 20% 到 20% 之间的随机范围。

socket.connection.setup.timeout.ms

Type: long
Default: 10000 (10 秒)
Importance: medium

客户端将等待套接字连接建立的时间。如果在超时前没有构建连接,客户端将关闭套接字频道。

ssl.enabled.protocols

type: list
Default: TLSv1.2,TLSv1.3
Importance: medium

为 SSL 连接启用的协议列表。使用 Java 11 或更高版本 'TLSv1.2' 运行时,默认为 'TLSv1.2'。使用 Java 11 的默认值,如果客户端和服务器同时支持 TLSv1.3,则客户端和服务器将首选 TLSv1.3,否则将回退到 TLSv1.2(假设两者都至少支持 TLSv1.2)。这个默认值对于大多数情况来说应该可以正常工作。另请参阅 ssl.protocol 的配置文档。

ssl.keystore.type

type: string
Default: JKS
Importance: medium

密钥存储文件的文件格式。这对客户端是可选的。默认 ssl.engine.factory.class 目前支持的值是 [JKS, PKCS12, PEM]。

ssl.protocol

type: string
Default: TLSv1.3
Importance: medium

用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更高版本 'TLSv1.2' 运行时,默认为 'TLSv1.3'。这个值应该适用于大多数用例。最近的 JVM 中的允许值为 'TLSv1.2' 和 'TLSv1.3'。'TLS', 'TLSv1.1', 'SSL', 'SSLv2' 和 'SSLv3' 可能在较旧的 JVM 中被支持,但由于已知的安全漏洞,不建议使用它们的使用。使用这个配置和 'ssl.enabled.protocols' 的默认值,如果服务器不支持 'TLSv1.3',客户端将降级为 'TLSv1.2'。如果此配置被设置为 'TLSv1.2',则客户端将不会使用 'TLSv1.3',即使它是 ssl.enabled.protocols 中的一个值,且服务器只支持 'TLSv1.3'。

ssl.provider

Type: string
Default: null
Importance: medium

用于 SSL 连接的安全提供程序的名称。默认值为 JVM 的默认安全提供程序。

ssl.truststore.type

type: string
Default: JKS
Importance: medium

信任存储文件的文件格式。默认 ssl.engine.factory.class 目前支持的值是 [JKS, PKCS12, PEM]。

auto.commit.interval.ms

type: int
Default: 5000 (5 秒)
Valid Values: [0,…​]
Importance: low

如果 enable.auto.commit 设为 true,则使用者偏移的频率(毫秒)自动提交为 Kafka。

auto.include.jmx.reporter

Type: boolean
Default: true
Importance: low

已弃用。即使没有在 metric.reporters 中列出,也自动包含 JmxReporter。此配置将在 Kafka 4.0 中删除,用户应改为将 org.apache.kafka.common.metrics.JmxReporter 包含在 metric.reporters 中,以便启用 JmxReporter。

check.crcs

Type: boolean
Default: true
Importance: low

自动检查已使用的记录的 CRC32。这样可确保发生消息的在线或磁盘损坏。此检查添加了一些开销,因此在寻求极端性能的情况下可能会禁用它。

client.id

type: string
Default: ""
Importance: low

在发出请求时传递给服务器的 id 字符串。这样做的目的是通过允许将逻辑应用程序名称包含在服务器端请求日志中来跟踪超过 ip/port 的请求源。

client.rack

type: string
Default: ""
Importance: low

此客户端的机架标识符。这可以是任何字符串值,指示此客户端物理位置。它与代理配置 'broker.rack' 对应。

fetch.max.wait.ms

type: int
Default: 500
Valid Values: [0,…​]
Importance: low

如果没有足够的数据来立即满足 fetch.min.bytes 给出的要求,服务器在回答获取请求前将阻止的最大时间。

interceptor.classes

type: list
Default: ""
Valid Values: non-null string
Importance: low

用作拦截器的类列表。通过实施 org.apache.kafka.clients.consumer.ConsumerInterceptor 接口,您可以拦截(可能)消费者收到的记录。默认情况下,没有拦截器。

metadata.max.age.ms

Type: long
Default: 300000 (5 minutes)
Valid Values: [0,…​]
Importance: low

以毫秒为单位的时间,我们强制刷新元数据,即使我们未看到任何分区领导更改来主动发现任何新的代理或分区。

metric.reporters

type: list
Default: ""
Valid Values: non-null string
Importance: low

用作指标报告器的类列表。通过实施 org.apache.kafka.common.metrics.MetricsReporter 接口,可以插入新指标创建通知的类。JmxReporter 始终包含在注册 JMX 统计数据中。

metrics.num.samples

type: int
Default: 2
Valid Values: [1,…​]
Importance: low

维护到计算指标的示例数量。

metrics.recording.level

type: string
Default: INFO
Valid Values: [INFO, DEBUG, TRACE]
Importance: low

指标的最高记录级别。

metrics.sample.window.ms

Type: long
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: low

计算指标示例的时间窗口。

reconnect.backoff.max.ms

Type: long
Default: 1000 (1 second)
Valid Values: [0,…​]
Importance: low

当重新连接到重复连接失败的代理时,需要等待的最大时间(毫秒)。如果提供,每个主机的 backoff 将为每个连续的连接失败指数增加,直到最高值。在计算 backoff 增长后,会添加 20% 随机的 jitter 以避免连接 storms。

reconnect.backoff.ms

Type: long
Default: 50
Valid Values: [0,…​]
Importance: low

尝试重新连接到给定主机前需要等待的基本时间。这可避免在紧张循环中重复连接到主机。这个 backoff 适用于客户端到代理的所有连接尝试。

retry.backoff.ms

Type: long
Default: 100
Valid Values: [0,…​]
Importance: low

尝试重试失败的请求到给定主题分区前等待的时间。这可避免在某些故障情况下在严格的循环中重复发送请求。

sasl.kerberos.kinit.cmd

type: string
Default: /usr/bin/kinit
Importance: low

Kerberos kinit 命令路径。

sasl.kerberos.min.time.before.relogin

Type: long
Default: 60000
Importance: low

刷新尝试之间的登录线程睡眠时间。

sasl.kerberos.ticket.renew.jitter

Type: double
Default: 0.05
Importance: low

添加到续订时间的随机 jitter 百分比。

sasl.kerberos.ticket.renew.window.factor

Type: double
Default: 0.8
Importance: low

登录线程会处于睡眠状态,直到最后一次刷新到票据到期时间的指定窗口因子被达到,此时它将尝试续订票据。

sasl.login.connect.timeout.ms

Type: int
Default: null
Importance: low

(可选)外部身份验证供应商连接超时的值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。

sasl.login.read.timeout.ms

Type: int
Default: null
Importance: low

(可选)外部身份验证提供程序读取超时的值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.buffer.seconds

Type: short
Default: 300
Valid Values: [0,…​,3600]
Importance: low

刷新凭证时,凭证过期前要维护的缓冲区时间(以秒为单位)。如果刷新的过期时间比缓冲区秒数接近,则会移动刷新以尽可能多地维护缓冲区时间。法律值介于 0 到 3600 之间(1 小时);如果没有指定值,则使用默认值 300 (5 分钟)。如果它们总和超过凭证的剩余生命周期,则这个值和 sasl.login.refresh.min.period.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.min.period.seconds

Type: short
Default: 60
Valid Values: [0,…​,900]
Importance: low

在刷新凭证前,登录刷新线程需要最少的时间(以秒为单位)。法律值介于 0 到 900 (15 分钟);如果没有指定值,则使用默认值 60 (1 分钟)。如果其总和超过凭证的剩余生命周期,则这个值和 sasl.login.refresh.buffer.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.factor

Type: double
Default: 0.8
Valid Values: [0.5,…​,1.0]
Importance: low

登录刷新线程将休眠,直到达到了与凭证生命周期相关的指定窗口因子,在此期间它将尝试刷新凭证。法律值介于 0.5 (50%)和 1.0 (100%)之间,如果未指定值,则使用默认值 0.8 (80%)。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.jitter

Type: double
Default: 0.05
Valid Values: [0.0,…​,0.25]
Importance: low

与凭证生命周期相关的随机 jitter 的最大随机处理量,添加到登录刷新线程的睡眠时间中。法律值介于 0 到 0.25(25%)之间,如果没有指定值,则使用默认值 0.05(5%)。目前仅适用于 OAUTHBEARER。

sasl.login.retry.backoff.max.ms

Type: long
Default: 10000 (10 秒)
Importance: low

(可选)值(可选)值,以毫秒为单位,登录尝试外部身份验证提供程序之间的最长等待时间。login 使用基于 sasl.login.retry.backoff.ms 设置的初始等待时间的 exponential backoff 算法,并在尝试通过 sasl.login.retry.backoff.max.ms 设置指定的最大等待长度之间以等待长度加倍。目前仅适用于 OAUTHBEARER。

sasl.login.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)值(可选)值,以毫秒为单位,用于登录尝试外部身份验证提供程序之间的初始等待。login 使用基于 sasl.login.retry.backoff.ms 设置的初始等待时间的 exponential backoff 算法,并在尝试通过 sasl.login.retry.backoff.max.ms 设置指定的最大等待长度之间以等待长度加倍。目前仅适用于 OAUTHBEARER。

sasl.oauthbearer.clock.skew.seconds

Type: int
Default: 30
Importance: low

(可选)值(以秒为单位)允许 OAuth/OIDC 身份提供程序和代理的时间之间的区别。

sasl.oauthbearer.expected.audience

type: list
Default: null
Importance: low

(可选)代理的以逗号分隔的设置,用于验证为预期受众之一发布的 JWT。JWT 将检查是否有标准的 OAuth "aud" 声明,如果设置了这个值,代理将匹配 JWT 的"aud"声明中的值,以查看是否有完全匹配。如果没有匹配项,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.expected.issuer

Type: string
Default: null
Importance: low

(可选)代理用于验证 JWT 是由预期签发者创建的。JWT 将检查是否有标准的 OAuth"iss"声明,如果设置了这个值,代理将完全与 JWT 的"iss"声明中的内容匹配。如果没有匹配项,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.jwks.endpoint.refresh.ms

Type: long
Default: 3600000 (1 小时)
Importance: low

(可选)值(可选)代理在刷新其 JWKS (JSON Web Key Set)缓存之间等待的时间(以毫秒为单位),其中包含验证 JWT 签名的密钥。

sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms

Type: long
Default: 10000 (10 秒)
Importance: low

(可选)值(可选)值(以毫秒为单位),尝试从外部身份验证供应商检索 JWKS (JSON Web Key Set)之间的最长等待时间。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待时间,在尝试达到由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置指定的最大等待长度之间会重复等待长度。

sasl.oauthbearer.jwks.endpoint.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)值(可选)值,以毫秒为单位,用于来自外部身份验证提供程序的 JWKS (JSON Web Key Set)检索尝试。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待时间,在尝试达到由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置指定的最大等待长度之间会重复等待长度。

sasl.oauthbearer.scope.claim.name

type: string
Default: scope
Importance: low

范围的 OAuth 声明通常命名为"scope",但这(可选)设置可以提供与 JWT 有效负载声明中包含的范围使用不同的名称,如果 OAuth/OIDC 供应商对该声明使用不同的名称。

sasl.oauthbearer.sub.claim.name

type: string
Default: sub
Importance: low

主题的 OAuth 声明通常名为"sub",但这(可选)设置可以提供与 JWT 有效负载声明中包含的主题使用不同的名称,如果 OAuth/OIDC 供应商对该声明使用不同的名称。

security.providers

Type: string
Default: null
Importance: low

可配置的创建者类列表,每个都返回实施安全算法的供应商。这些类应该实施 org.apache.kafka.common.security.auth.SecurityProviderCreator 接口。

ssl.cipher.suites

type: list
Default: null
Importance: low

密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下支持所有可用的密码套件。

ssl.endpoint.identification.algorithm

type: string
Default: https
Importance: low

使用服务器证书验证服务器主机名的端点标识算法。

ssl.engine.factory.class

Type: class
Default: null
Importance: low

用于提供 SSLEngine 对象的 org.apache.kafka.common.security.auth.SslEngineFactory 类型的类。默认值为 org.apache.kafka.common.security.ssl.DefaultSslEngineFactory。

ssl.keymanager.algorithm

type: string
Default: SunX509
Importance: low

用于 SSL 连接的密钥管理器工厂使用的算法。Default 值是为 Java 虚拟机配置的密钥管理器工厂算法。

ssl.secure.random.implementation

Type: string
Default: null
Importance: low

用于 SSL 加密操作的 SecureRandom PRNG 实现。

ssl.trustmanager.algorithm

type: string
Default: PKIX
Importance: low

信任管理器工厂用于 SSL 连接的算法。Default 值是为 Java 虚拟机配置的信任管理器工厂算法。

第 4 章 制作者配置属性

key.serializer

type: class
Importance: high

实施 org.apache.kafka.common.serialization.Serializer 接口的密钥的 serializer 类。

value.serializer

type: class
Importance: high

serializer 类用于实施 org.apache.kafka.common.serialization.Serializer 接口的值。

bootstrap.servers

type: list
Default: ""
Valid Values: non-null string
Importance: high

用于建立到 Kafka 集群的初始连接的主机/端口对列表。客户端将使用此处指定的服务器的所有服务器进行引导 - 此列表仅影响用于发现整套服务器的初始主机。此列表应该采用 host1:port1,host2:port2,…​ 的形式。由于这些服务器仅用于初始连接来发现完整的群集成员(这可能会动态更改),此列表不需要包含完整的服务器集合(但在服务器停机的情况下可能需要多个服务器)。

buffer.memory

Type: long
Default: 33554432
Valid Values: [0,…​]
Importance: high

制作者可用于缓冲记录的总字节,用于等待发送到服务器。如果记录发送速度快于服务器,则生产者将阻止 max.block.ms 用于抛出异常。

此设置应当与制作者要使用的内存大致对应,但不是制作者使用的所有内存进行缓冲的硬绑定。一些额外的内存将用于压缩(如果启用了压缩),以及维护 in-flight 请求。

compression.type

type: string
Default: none
Valid Values: [none, gzip, snappy, lz4, zstd]
Importance: high

生成者生成的所有数据的压缩类型。默认为 none (例如,没有压缩)。有效值为 none,gzip,snappy,lz4, 或 zstd。压缩是全批数据,因此批处理的效率也会影响压缩率(更多批处理意味着更好的压缩)。

retries

type: int
Default: 2147483647
Valid Values: [0,…​,2147483647]
Importance: high

设置大于零的值将导致客户端重新发送发送失败的任何记录,并具有潜在的瞬时错误。请注意,如果客户端在收到错误时重新显示记录,则这个重试不会不同。如果在通过 delivery.timeout.ms 配置超时前,在重试次数之前,生成请求将失败,然后再成功确认前过期。用户通常应该保留这个配置未设置,而是使用 delivery.timeout.ms 来控制重试行为。

启用 idempotence 要求此配置值大于 0。如果设置了冲突的配置,并且没有显式启用 idempotence,则禁用 idempotence。

当将 enable.idempotence 设置为 false 时,把 max.in.flight.requests.per.connection 设置为 1 时可能会更改记录顺序,因为如果两个批处理被发送到一个分区,则第一个失败,但重试,但第二个批处理中的记录可能会首先出现。

ssl.key.password

Type: password
Default: null
Importance: high

密钥存储文件或 'ssl.keystore.key' 中指定的 PEM 密钥中的私钥密码。

ssl.keystore.certificate.chain

Type: password
Default: null
Importance: high

使用由 'ssl.keystore.type" 指定的格式的证书链。默认 SSL 引擎工厂只支持带有 X.509 证书列表的 PEM 格式。

ssl.keystore.key

Type: password
Default: null
Importance: high

使用 'ssl.keystore.type" 指定的格式的私钥。默认 SSL 引擎工厂只支持带有 PKCS#8 密钥的 PEM 格式。如果密钥加密,则必须使用 'ssl.key.password' 指定密钥密码。

ssl.keystore.location

Type: string
Default: null
Importance: high

密钥存储文件的位置。这是可选的,可用于客户端双向身份验证。

ssl.keystore.password

Type: password
Default: null
Importance: high

密钥存储文件的存储密码。这适用于客户端,只有在配置了 'ssl.keystore.location' 时才需要。PEM 格式不支持密钥存储密码。

ssl.truststore.certificates

Type: password
Default: null
Importance: high

可信证书,格式为 'ssl.truststore.type'。默认 SSL 引擎工厂仅支持使用 X.509 证书使用 PEM 格式。

ssl.truststore.location

Type: string
Default: null
Importance: high

信任存储文件的位置。

ssl.truststore.password

Type: password
Default: null
Importance: high

信任存储文件的密码。如果没有设置密码,则仍将使用配置的信任存储文件,但会禁用完整性检查。PEM 格式不支持信任存储密码。

batch.size

type: int
Default: 16384
Valid Values: [0,…​]
Importance: medium

每当将多个记录发送到同一分区时,生产者都将尝试将记录一起批处理为更少的请求。这有助于客户端和服务器上的性能。此配置控制默认的批处理大小,以字节为单位。

不会对大于这个大小的批处理记录进行尝试。

发送到代理的请求将包含多个批处理,每个分区都有可发送数据。

小批处理大小将使批处理不常见,并可能会降低吞吐量(批处理大小为零将完全禁用批处理)。非常大的批处理大小可能会更加浪费地使用内存,因为我们将始终在分析额外记录时分配指定批处理大小的缓冲区。

注意:此设置提供要发送的批处理大小的上限。如果我们为这个分区积累的数量少于此指定的字节,那么我们会"闲置" linger.ms 时间来等待更多记录。此 linger.ms 设置默认为 0,这意味着我们会立即发送记录,即使被积累的批处理大小位于此 batch.size 设置下。

client.dns.lookup

type: string
Default: use_all_dns_ips
Valid Values: [use_all_dns_ips, resolve_canonical_bootstrap_servers_only]
Importance: medium

控制客户端如何使用 DNS 查找。如果设置为 use_all_dns_ips,按顺序连接到每个返回的 IP 地址,直到成功建立连接为止。断开连接后,会使用下一个 IP。使用了所有 IP 后,客户端会再次从主机名( JVM 和 OS 缓存 DNS 名称查找)解析 IP 地址。如果设置为 resolve_canonical_bootstrap_servers_only,请将每个 bootstrap 地址解析为规范名称列表。在 bootstrap 阶段后,这与 use_all_dns_ips 相同。

client.id

type: string
Default: ""
Importance: medium

在发出请求时传递给服务器的 id 字符串。这样做的目的是通过允许将逻辑应用程序名称包含在服务器端请求日志中来跟踪超过 ip/port 的请求源。

connections.max.idle.ms

Type: long
Default: 540000 (9 分钟)
Importance: medium

在此配置指定的毫秒数后关闭闲置连接。

delivery.timeout.ms

type: int
Default: 120000 (2 分钟)
Valid Values: [0,…​]
Importance: medium

在调用 send () 后报告成功或失败的时间上限。这限制了在发送前延迟记录的总时间,从代理等待确认时间(如预期),以及可重新发送失败的时间。如果遇到不可恢复的错误,则生产者可能会报告失败,以发送记录失败,或者记录已耗尽,或者记录添加到达到较早交付到期期限的批处理中。此配置的值应大于或等于 request.timeout.mslinger.ms 的总和。

linger.ms

Type: long
Default: 0
Valid Values: [0,…​]
Importance: medium

生产者组将请求传输到单个批处理请求之间的任何记录组合在一起。通常,只有在记录到达的速度超过发送时,才会在负载下进行。然而,在某些情况下,客户端可能需要减少请求数量,即使是中等负载。此设置通过添加少量延时(即,而不是立即发送记录)来实现此目的,而是立即发送记录,将等待到给定的延迟,以允许发送其他记录,以便将发送一起批处理。这可以被认为与 TCP 中的 Nagle 的算法类似。此设置给出了批处理延迟的上限:当我们获得 批处理 时,无论此设置如何立即发送分区,则设置将立即发送,但如果我们为这个分区有多个字节,我们将在等待更多记录进行"闲置"时显示。此设置默认为 0 (例如,没有延迟)。例如,设置 linger.ms=5 具有减少发送的请求数量的影响,但会在没有负载时向发送的记录增加 5ms 延迟。

max.block.ms

Type: long
Default: 60000 (1 minute)
Valid Values: [0,…​]
Importance: medium

这个配置控制 KafkaProducer’s `send(), partitionsFor(), initTransactions(), sendOffsetsToTransaction(), commitTransaction() and abortTransaction() 方法将被阻塞多长时间。对于 send (),这个超时会绑定等待元数据获取和缓冲区分配的总时间(在用户提供的串行器或分区器中不会针对这个超时计算)。对于 partitionsFor (),这个超时会绑定等待元数据的时间(如果它不可用)。与事务相关的方法总是阻止,但如果无法发现事务协调器或者没有在超时内响应,则可能会出现超时问题。

max.request.size

type: int
Default: 1048576
Valid Values: [0,…​]
Importance: medium

请求的最大大小(以字节为单位)。此设置将限制制作者在单个请求中发送的记录批处理数,以避免发送大型请求。这也是最大未压缩记录批处理大小的上限。请注意,服务器在记录批处理大小上具有自己的上限(如果启用压缩,则时间为压缩),这可能因此不同。

partitioner.class

Type: class
Default: null
Importance: medium

一个类,用来决定在生成记录时要发送哪些分区。可用的选项有:

  • 如果没有设置,则使用默认分区逻辑。此策略将尝试盘到分区,直到生成至少 batch.size 字节为止。它与策略一起使用:
  • 如果没有指定分区,但没有指定密钥,请根据密钥的哈希值选择一个分区
  • 如果没有分区或密钥,请选择在至少向分区生成 batch.size 字节时更改的粘性分区。
  • org.apache.kafka.clients.producer.RoundRobinPartitioner :此分区策略是每个记录连续的记录都将发送到不同的分区(无论是提供"密钥"),直到我们用完分区为止。注意:存在一个已知问题,在创建新批处理时将导致不均匀分布。请检查 KAFKA-9965 以了解更多详细信息。

    通过实施 org.apache.kafka.clients.producer.Partitioner 接口,您可以插入自定义分区程序。

partitioner.ignore.keys

Type: boolean
Default: false
Importance: medium

当设置为 'true' 时,生产者不使用记录密钥来选择分区。如果 'false',当出现密钥时,生产者将根据密钥哈希选择一个分区。注意:如果使用自定义分区器,则此设置无效。

receive.buffer.bytes

type: int
Default: 32768 (32 kibibytes)
Valid Values: [-1,…​]
Importance: medium

读取数据时使用的 TCP 接收缓冲区的大小(SO_RCVBUF)。如果值为 -1,则会使用 OS 默认值。

request.timeout.ms

type: int
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: medium

配置控制客户端等待请求响应的最长时间。如果响应在超时前收到,客户端会在必要时重新发送请求,或者在重试已耗尽时失败请求。这应该大于 replica.lag.time.max.ms (代理配置),以减少因为生成者重试而出现消息重复的可能性。

sasl.client.callback.handler.class

Type: class
Default: null
Importance: medium

实现 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理器类的完全限定名称。

sasl.jaas.config

Type: password
Default: null
Importance: medium

用于 SASL 连接的 JAAS 登录上下文参数,其格式由 JAAS 配置文件使用的格式。JAAS 配置文件格式描述 在此处。值的格式是: loginModuleClass controlFlag (optionName=optionValue)*;。对于代理,配置必须在小写中带有监听前缀和 SASL 机制名称前缀。例如: listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule;.

sasl.kerberos.service.name

Type: string
Default: null
Importance: medium

Kafka 运行的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 配置中定义。

sasl.login.callback.handler.class

Type: class
Default: null
Importance: medium

实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理器类的完全限定名称。对于代理,登录回调处理器配置必须以监听器前缀和 SASL 机制名称作为前缀作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler。

sasl.login.class

Type: class
Default: null
Importance: medium

实现 Login 接口的类的完全限定名称。对于代理,登录配置必须在小写中带有监听前缀和 SASL 机制名称前缀。For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin.

sasl.mechanism

type: string
Default: GSSAPI
Importance: medium

用于客户端连接的 SASL 机制。这可能是提供安全提供程序的任何机制。GSSAPI 是默认机制。

sasl.oauthbearer.jwks.endpoint.url

Type: string
Default: null
Importance: medium

从中检索提供程序 JWKS (JSON Web Key Set) 的 OAuth/OIDC 供应商 URL。URL 可以是基于 HTTP (S)或基于文件的 URL。如果 URL 基于 HTTP (S),则 JWKS 数据将通过代理启动时配置的 URL 从 OAuth/OIDC 供应商中检索。所有 then-current 密钥都将缓存到代理上,用于传入的请求。如果为 JWT 收到身份验证请求,其中包含尚未在缓存中"kid"标头声明值,则 JWKS 端点将根据需要重新查询。但是,代理在每个 sasl.oauthbearer.jwks.endpoint.refresh.ms 毫秒中轮询 URL,以便在收到包含它们的 JWT 请求前使用任何即将刷新缓存。如果 URL 基于文件,代理将在启动时从配置的位置加载 JWKS 文件。如果 JWT 包含不在 JWKS 文件中的"kid"标头值,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.token.endpoint.url

Type: string
Default: null
Importance: medium

OAuth/OIDC 身份提供程序的 URL。如果 URL 基于 HTTP (S),则它是签发者的令牌端点 URL,请求将根据 sasl.jaas.config 中的配置登录。如果 URL 基于文件,它指定一个包含由 OAuth/OIDC 身份提供程序发布的访问令牌(在 JWT 序列化形式)的文件,以用于授权。

security.protocol

Type: string
Default: PLAINTEXT
Valid Values: [PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL]
Importance: medium

用于与代理通信的协议。有效值为: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL.

send.buffer.bytes

type: int
Default: 131072 (128 kibibytes)
Valid Values: [-1,…​]
Importance: medium

在发送数据时使用的 TCP 发送缓冲区的大小(SO_SNDBUF)。如果值为 -1,则会使用 OS 默认值。

socket.connection.setup.timeout.max.ms

Type: long
Default: 30000 (30 秒)
Importance: medium

客户端将等待套接字连接建立的最长时间。对于每个连续连接失败,连接设置超时将以指数级增长到此最大值。为避免连接失败,0.2 的随机因素将应用于超时,导致在计算值高于计算值的 20% 到 20% 之间的随机范围。

socket.connection.setup.timeout.ms

Type: long
Default: 10000 (10 秒)
Importance: medium

客户端将等待套接字连接建立的时间。如果在超时前没有构建连接,客户端将关闭套接字频道。

ssl.enabled.protocols

type: list
Default: TLSv1.2,TLSv1.3
Importance: medium

为 SSL 连接启用的协议列表。使用 Java 11 或更高版本 'TLSv1.2' 运行时,默认为 'TLSv1.2'。使用 Java 11 的默认值,如果客户端和服务器同时支持 TLSv1.3,则客户端和服务器将首选 TLSv1.3,否则将回退到 TLSv1.2(假设两者都至少支持 TLSv1.2)。这个默认值对于大多数情况来说应该可以正常工作。另请参阅 ssl.protocol 的配置文档。

ssl.keystore.type

type: string
Default: JKS
Importance: medium

密钥存储文件的文件格式。这对客户端是可选的。默认 ssl.engine.factory.class 目前支持的值是 [JKS, PKCS12, PEM]。

ssl.protocol

type: string
Default: TLSv1.3
Importance: medium

用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更高版本 'TLSv1.2' 运行时,默认为 'TLSv1.3'。这个值应该适用于大多数用例。最近的 JVM 中的允许值为 'TLSv1.2' 和 'TLSv1.3'。'TLS', 'TLSv1.1', 'SSL', 'SSLv2' 和 'SSLv3' 可能在较旧的 JVM 中被支持,但由于已知的安全漏洞,不建议使用它们的使用。使用这个配置和 'ssl.enabled.protocols' 的默认值,如果服务器不支持 'TLSv1.3',客户端将降级为 'TLSv1.2'。如果此配置被设置为 'TLSv1.2',则客户端将不会使用 'TLSv1.3',即使它是 ssl.enabled.protocols 中的一个值,且服务器只支持 'TLSv1.3'。

ssl.provider

Type: string
Default: null
Importance: medium

用于 SSL 连接的安全提供程序的名称。默认值为 JVM 的默认安全提供程序。

ssl.truststore.type

type: string
Default: JKS
Importance: medium

信任存储文件的文件格式。默认 ssl.engine.factory.class 目前支持的值是 [JKS, PKCS12, PEM]。

acks

type: string
Default: all
Valid Values: [all, -1, 0, 1]
Importance: low

在考虑请求完成前,生产者需要收到该制作者的确认数量。这控制发送的记录的持久性。允许以下设置:

  • acks=0 如果设为零,则制作者不会等待服务器中的任何确认。记录将立即添加到套接字缓冲区中,并被视为已发送。不保证服务器在这种情况下收到了记录,重试 配置将无效(因为客户端通常不知道任何故障)。为每个记录提供的偏移始终设置为 -1
  • acks=1 这意味着领导记录将记录写入其本地日志,但不会等待所有后续者完全确认。在这种情况下,领导会在确认记录后立即失败,但在后续者复制之前,记录将会丢失。
  • acks=all 意味着领导会等待一整套同步副本确认记录。这样可保证,只要至少有一个同步副本保持活跃,记录就不会被丢失。这是最强的可用保证。这等同于 acks=-1 设置。

    请注意,启用 idempotence 需要此配置值为 'all'。如果设置了冲突的配置,并且没有显式启用 idempotence,则禁用 idempotence。

auto.include.jmx.reporter

Type: boolean
Default: true
Importance: low

已弃用。即使没有在 metric.reporters 中列出,也自动包含 JmxReporter。此配置将在 Kafka 4.0 中删除,用户应改为将 org.apache.kafka.common.metrics.JmxReporter 包含在 metric.reporters 中,以便启用 JmxReporter。

enable.idempotence

Type: boolean
Default: true
Importance: low

当设置为 'true' 时,生产者将确保在流中写入每个消息的确切副本。如果为 'false',则因代理失败而重试制作者,可能会在流中写入重试消息重复。请注意,启用 idempotence 需要 max.in.flight.requests.per.connection 小于或等于 5 (具有任何允许值保留的消息排序),重试 大于 0,而 acks 必须是 'all'。

如果没有设置任何冲突配置,则默认启用 Idempence。如果设置了冲突的配置,并且没有显式启用 idempotence,则禁用 idempotence。如果明确启用了 idempotence,并且设置了冲突的配置,则会引发 ConfigException

interceptor.classes

type: list
Default: ""
Valid Values: non-null string
Importance: low

用作拦截器的类列表。通过实施 org.apache.kafka.clients.producer.ProducerInterceptor 接口,您可以在生成者在向 Kafka 集群发布前截获(并可能变异)收到的记录。默认情况下,没有拦截器。

max.in.flight.requests.per.connection

type: int
Default: 5
Valid Values: [1,…​]
Importance: low

在阻塞前,客户端将在单个连接上发送的最大未确认请求数量。请注意,如果将此配置设定为大于 1,并且 enable.idempotence 被设置为 false,则会在因为重试而失败发送后重新排序消息的风险(例如,如果启用了重试);如果禁用重试,或者将 enable.idempotence 设置为 true,则排序将被保留。此外,启用 idempotence 还需要此配置的值小于或等于 5。如果设置了冲突的配置,并且没有显式启用 idempotence,则禁用 idempotence。

metadata.max.age.ms

Type: long
Default: 300000 (5 minutes)
Valid Values: [0,…​]
Importance: low

以毫秒为单位的时间,我们强制刷新元数据,即使我们未看到任何分区领导更改来主动发现任何新的代理或分区。

metadata.max.idle.ms

Type: long
Default: 300000 (5 minutes)
Valid Values: [5000,…​]
Importance: low

控制制作者为空闲的主题缓存元数据的时长。如果最后一次生成了一个主题的过期时间超过元数据闲置持续时间,则主题的元数据会被忘记,下一次对它的访问会强制元数据获取请求。

metric.reporters

type: list
Default: ""
Valid Values: non-null string
Importance: low

用作指标报告器的类列表。通过实施 org.apache.kafka.common.metrics.MetricsReporter 接口,可以插入新指标创建通知的类。JmxReporter 始终包含在注册 JMX 统计数据中。

metrics.num.samples

type: int
Default: 2
Valid Values: [1,…​]
Importance: low

维护到计算指标的示例数量。

metrics.recording.level

type: string
Default: INFO
Valid Values: [INFO, DEBUG, TRACE]
Importance: low

指标的最高记录级别。

metrics.sample.window.ms

Type: long
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: low

计算指标示例的时间窗口。

partitioner.adaptive.partitioning.enable

Type: boolean
Default: true
Importance: low

当设置为 'true' 时,生产者将尝试适应代理性能,并为在更快代理上托管的分区生成更多消息。如果 'false',生产者将尝试统一地分发消息。注意:如果使用自定义分区器,则此设置无效。

partitioner.availability.timeout.ms

Type: long
Default: 0
Valid Values: [0,…​]
Importance: low

如果代理无法从分区生成来自 partitioner.availability.timeout.ms 时间的请求,则分区器会将该分区视为不可用。如果值为 0,则禁用此逻辑。注:如果使用自定义分区器或 partitioner.adaptive.partitioning.enable 设置为 'false',则此设置无效。

reconnect.backoff.max.ms

Type: long
Default: 1000 (1 second)
Valid Values: [0,…​]
Importance: low

当重新连接到重复连接失败的代理时,需要等待的最大时间(毫秒)。如果提供,每个主机的 backoff 将为每个连续的连接失败指数增加,直到最高值。在计算 backoff 增长后,会添加 20% 随机的 jitter 以避免连接 storms。

reconnect.backoff.ms

Type: long
Default: 50
Valid Values: [0,…​]
Importance: low

尝试重新连接到给定主机前需要等待的基本时间。这可避免在紧张循环中重复连接到主机。这个 backoff 适用于客户端到代理的所有连接尝试。

retry.backoff.ms

Type: long
Default: 100
Valid Values: [0,…​]
Importance: low

尝试重试失败的请求到给定主题分区前等待的时间。这可避免在某些故障情况下在严格的循环中重复发送请求。

sasl.kerberos.kinit.cmd

type: string
Default: /usr/bin/kinit
Importance: low

Kerberos kinit 命令路径。

sasl.kerberos.min.time.before.relogin

Type: long
Default: 60000
Importance: low

刷新尝试之间的登录线程睡眠时间。

sasl.kerberos.ticket.renew.jitter

Type: double
Default: 0.05
Importance: low

添加到续订时间的随机 jitter 百分比。

sasl.kerberos.ticket.renew.window.factor

Type: double
Default: 0.8
Importance: low

登录线程会处于睡眠状态,直到最后一次刷新到票据到期时间的指定窗口因子被达到,此时它将尝试续订票据。

sasl.login.connect.timeout.ms

Type: int
Default: null
Importance: low

(可选)外部身份验证供应商连接超时的值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。

sasl.login.read.timeout.ms

Type: int
Default: null
Importance: low

(可选)外部身份验证提供程序读取超时的值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.buffer.seconds

Type: short
Default: 300
Valid Values: [0,…​,3600]
Importance: low

刷新凭证时,凭证过期前要维护的缓冲区时间(以秒为单位)。如果刷新的过期时间比缓冲区秒数接近,则会移动刷新以尽可能多地维护缓冲区时间。法律值介于 0 到 3600 之间(1 小时);如果没有指定值,则使用默认值 300 (5 分钟)。如果它们总和超过凭证的剩余生命周期,则这个值和 sasl.login.refresh.min.period.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.min.period.seconds

Type: short
Default: 60
Valid Values: [0,…​,900]
Importance: low

在刷新凭证前,登录刷新线程需要最少的时间(以秒为单位)。法律值介于 0 到 900 (15 分钟);如果没有指定值,则使用默认值 60 (1 分钟)。如果其总和超过凭证的剩余生命周期,则这个值和 sasl.login.refresh.buffer.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.factor

Type: double
Default: 0.8
Valid Values: [0.5,…​,1.0]
Importance: low

登录刷新线程将休眠,直到达到了与凭证生命周期相关的指定窗口因子,在此期间它将尝试刷新凭证。法律值介于 0.5 (50%)和 1.0 (100%)之间,如果未指定值,则使用默认值 0.8 (80%)。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.jitter

Type: double
Default: 0.05
Valid Values: [0.0,…​,0.25]
Importance: low

与凭证生命周期相关的随机 jitter 的最大随机处理量,添加到登录刷新线程的睡眠时间中。法律值介于 0 到 0.25(25%)之间,如果没有指定值,则使用默认值 0.05(5%)。目前仅适用于 OAUTHBEARER。

sasl.login.retry.backoff.max.ms

Type: long
Default: 10000 (10 秒)
Importance: low

(可选)值(可选)值,以毫秒为单位,登录尝试外部身份验证提供程序之间的最长等待时间。login 使用基于 sasl.login.retry.backoff.ms 设置的初始等待时间的 exponential backoff 算法,并在尝试通过 sasl.login.retry.backoff.max.ms 设置指定的最大等待长度之间以等待长度加倍。目前仅适用于 OAUTHBEARER。

sasl.login.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)值(可选)值,以毫秒为单位,用于登录尝试外部身份验证提供程序之间的初始等待。login 使用基于 sasl.login.retry.backoff.ms 设置的初始等待时间的 exponential backoff 算法,并在尝试通过 sasl.login.retry.backoff.max.ms 设置指定的最大等待长度之间以等待长度加倍。目前仅适用于 OAUTHBEARER。

sasl.oauthbearer.clock.skew.seconds

Type: int
Default: 30
Importance: low

(可选)值(以秒为单位)允许 OAuth/OIDC 身份提供程序和代理的时间之间的区别。

sasl.oauthbearer.expected.audience

type: list
Default: null
Importance: low

(可选)代理的以逗号分隔的设置,用于验证为预期受众之一发布的 JWT。JWT 将检查是否有标准的 OAuth "aud" 声明,如果设置了这个值,代理将匹配 JWT 的"aud"声明中的值,以查看是否有完全匹配。如果没有匹配项,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.expected.issuer

Type: string
Default: null
Importance: low

(可选)代理用于验证 JWT 是由预期签发者创建的。JWT 将检查是否有标准的 OAuth"iss"声明,如果设置了这个值,代理将完全与 JWT 的"iss"声明中的内容匹配。如果没有匹配项,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.jwks.endpoint.refresh.ms

Type: long
Default: 3600000 (1 小时)
Importance: low

(可选)值(可选)代理在刷新其 JWKS (JSON Web Key Set)缓存之间等待的时间(以毫秒为单位),其中包含验证 JWT 签名的密钥。

sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms

Type: long
Default: 10000 (10 秒)
Importance: low

(可选)值(可选)值(以毫秒为单位),尝试从外部身份验证供应商检索 JWKS (JSON Web Key Set)之间的最长等待时间。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待时间,在尝试达到由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置指定的最大等待长度之间会重复等待长度。

sasl.oauthbearer.jwks.endpoint.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)值(可选)值,以毫秒为单位,用于来自外部身份验证提供程序的 JWKS (JSON Web Key Set)检索尝试。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待时间,在尝试达到由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置指定的最大等待长度之间会重复等待长度。

sasl.oauthbearer.scope.claim.name

type: string
Default: scope
Importance: low

范围的 OAuth 声明通常命名为"scope",但这(可选)设置可以提供与 JWT 有效负载声明中包含的范围使用不同的名称,如果 OAuth/OIDC 供应商对该声明使用不同的名称。

sasl.oauthbearer.sub.claim.name

type: string
Default: sub
Importance: low

主题的 OAuth 声明通常名为"sub",但这(可选)设置可以提供与 JWT 有效负载声明中包含的主题使用不同的名称,如果 OAuth/OIDC 供应商对该声明使用不同的名称。

security.providers

Type: string
Default: null
Importance: low

可配置的创建者类列表,每个都返回实施安全算法的供应商。这些类应该实施 org.apache.kafka.common.security.auth.SecurityProviderCreator 接口。

ssl.cipher.suites

type: list
Default: null
Importance: low

密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下支持所有可用的密码套件。

ssl.endpoint.identification.algorithm

type: string
Default: https
Importance: low

使用服务器证书验证服务器主机名的端点标识算法。

ssl.engine.factory.class

Type: class
Default: null
Importance: low

用于提供 SSLEngine 对象的 org.apache.kafka.common.security.auth.SslEngineFactory 类型的类。默认值为 org.apache.kafka.common.security.ssl.DefaultSslEngineFactory。

ssl.keymanager.algorithm

type: string
Default: SunX509
Importance: low

用于 SSL 连接的密钥管理器工厂使用的算法。Default 值是为 Java 虚拟机配置的密钥管理器工厂算法。

ssl.secure.random.implementation

Type: string
Default: null
Importance: low

用于 SSL 加密操作的 SecureRandom PRNG 实现。

ssl.trustmanager.algorithm

type: string
Default: PKIX
Importance: low

信任管理器工厂用于 SSL 连接的算法。Default 值是为 Java 虚拟机配置的信任管理器工厂算法。

transaction.timeout.ms

Type: int
Default: 60000 (1 分钟)
Importance: low

事务协调器将在主动中止持续事务处理状态更新前等待来自制作者的事务状态更新的最长时间。如果这个值大于 broker 中的 transaction.max.timeout.ms 设置,则请求将失败,并显示 InvalidTxnTimeoutException 错误。

transactional.id

type: string
Default: null
Valid Values: non-empty string
Importance: low

用于事务交付的 TransactionalId。这可实现跨多个制作者会话的可靠性语义,因为它允许客户端保证在启动任何新事务前使用相同的 TransactionalId 的事务。如果没有提供 TransactionalId,则制作者将限制为幂等发送。如果配置了 TransactionalId,则忽略 enable.idempotence。默认情况下,TransactionId 没有配置,这意味着无法使用事务。请注意,默认情况下,事务需要至少三个代理集群,该代理是生产的建议设置;为了开发,您可以通过调整代理设置 transaction.state.log.replication.factor 来进行更改。

第 5 章 管理客户端配置属性

bootstrap.servers

type: list
Importance: high

用于建立到 Kafka 集群的初始连接的主机/端口对列表。客户端将使用此处指定的服务器的所有服务器进行引导 - 此列表仅影响用于发现整套服务器的初始主机。此列表应该采用 host1:port1,host2:port2,…​ 的形式。由于这些服务器仅用于初始连接来发现完整的群集成员(这可能会动态更改),此列表不需要包含完整的服务器集合(但在服务器停机的情况下可能需要多个服务器)。

ssl.key.password

Type: password
Default: null
Importance: high

密钥存储文件或 'ssl.keystore.key' 中指定的 PEM 密钥中的私钥密码。

ssl.keystore.certificate.chain

Type: password
Default: null
Importance: high

使用由 'ssl.keystore.type" 指定的格式的证书链。默认 SSL 引擎工厂只支持带有 X.509 证书列表的 PEM 格式。

ssl.keystore.key

Type: password
Default: null
Importance: high

使用 'ssl.keystore.type" 指定的格式的私钥。默认 SSL 引擎工厂只支持带有 PKCS#8 密钥的 PEM 格式。如果密钥加密,则必须使用 'ssl.key.password' 指定密钥密码。

ssl.keystore.location

Type: string
Default: null
Importance: high

密钥存储文件的位置。这是可选的,可用于客户端双向身份验证。

ssl.keystore.password

Type: password
Default: null
Importance: high

密钥存储文件的存储密码。这适用于客户端,只有在配置了 'ssl.keystore.location' 时才需要。PEM 格式不支持密钥存储密码。

ssl.truststore.certificates

Type: password
Default: null
Importance: high

可信证书,格式为 'ssl.truststore.type'。默认 SSL 引擎工厂仅支持使用 X.509 证书使用 PEM 格式。

ssl.truststore.location

Type: string
Default: null
Importance: high

信任存储文件的位置。

ssl.truststore.password

Type: password
Default: null
Importance: high

信任存储文件的密码。如果没有设置密码,则仍将使用配置的信任存储文件,但会禁用完整性检查。PEM 格式不支持信任存储密码。

client.dns.lookup

type: string
Default: use_all_dns_ips
Valid Values: [use_all_dns_ips, resolve_canonical_bootstrap_servers_only]
Importance: medium

控制客户端如何使用 DNS 查找。如果设置为 use_all_dns_ips,按顺序连接到每个返回的 IP 地址,直到成功建立连接为止。断开连接后,会使用下一个 IP。使用了所有 IP 后,客户端会再次从主机名( JVM 和 OS 缓存 DNS 名称查找)解析 IP 地址。如果设置为 resolve_canonical_bootstrap_servers_only,请将每个 bootstrap 地址解析为规范名称列表。在 bootstrap 阶段后,这与 use_all_dns_ips 相同。

client.id

type: string
Default: ""
Importance: medium

在发出请求时传递给服务器的 id 字符串。这样做的目的是通过允许将逻辑应用程序名称包含在服务器端请求日志中来跟踪超过 ip/port 的请求源。

connections.max.idle.ms

Type: long
Default: 300000 (5 minutes)
Importance: medium

在此配置指定的毫秒数后关闭闲置连接。

default.api.timeout.ms

type: int
Default: 60000 (1 minute)
Valid Values: [0,…​]
Importance: medium

指定客户端 API 的超时时间(以毫秒为单位)。此配置用作没有指定 timeout 参数的所有客户端操作的默认超时时间。

receive.buffer.bytes

type: int
Default: 65536 (64 kibibytes)
Valid Values: [-1,…​]
Importance: medium

读取数据时使用的 TCP 接收缓冲区的大小(SO_RCVBUF)。如果值为 -1,则会使用 OS 默认值。

request.timeout.ms

type: int
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: medium

配置控制客户端等待请求响应的最长时间。如果响应在超时前收到,客户端会在必要时重新发送请求,或者在重试已耗尽时失败请求。

sasl.client.callback.handler.class

Type: class
Default: null
Importance: medium

实现 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理器类的完全限定名称。

sasl.jaas.config

Type: password
Default: null
Importance: medium

用于 SASL 连接的 JAAS 登录上下文参数,其格式由 JAAS 配置文件使用的格式。JAAS 配置文件格式描述 在此处。值的格式是: loginModuleClass controlFlag (optionName=optionValue)*;。对于代理,配置必须在小写中带有监听前缀和 SASL 机制名称前缀。例如: listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule;.

sasl.kerberos.service.name

Type: string
Default: null
Importance: medium

Kafka 运行的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 配置中定义。

sasl.login.callback.handler.class

Type: class
Default: null
Importance: medium

实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理器类的完全限定名称。对于代理,登录回调处理器配置必须以监听器前缀和 SASL 机制名称作为前缀作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler。

sasl.login.class

Type: class
Default: null
Importance: medium

实现 Login 接口的类的完全限定名称。对于代理,登录配置必须在小写中带有监听前缀和 SASL 机制名称前缀。For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin.

sasl.mechanism

type: string
Default: GSSAPI
Importance: medium

用于客户端连接的 SASL 机制。这可能是提供安全提供程序的任何机制。GSSAPI 是默认机制。

sasl.oauthbearer.jwks.endpoint.url

Type: string
Default: null
Importance: medium

从中检索提供程序 JWKS (JSON Web Key Set) 的 OAuth/OIDC 供应商 URL。URL 可以是基于 HTTP (S)或基于文件的 URL。如果 URL 基于 HTTP (S),则 JWKS 数据将通过代理启动时配置的 URL 从 OAuth/OIDC 供应商中检索。所有 then-current 密钥都将缓存到代理上,用于传入的请求。如果为 JWT 收到身份验证请求,其中包含尚未在缓存中"kid"标头声明值,则 JWKS 端点将根据需要重新查询。但是,代理在每个 sasl.oauthbearer.jwks.endpoint.refresh.ms 毫秒中轮询 URL,以便在收到包含它们的 JWT 请求前使用任何即将刷新缓存。如果 URL 基于文件,代理将在启动时从配置的位置加载 JWKS 文件。如果 JWT 包含不在 JWKS 文件中的"kid"标头值,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.token.endpoint.url

Type: string
Default: null
Importance: medium

OAuth/OIDC 身份提供程序的 URL。如果 URL 基于 HTTP (S),则它是签发者的令牌端点 URL,请求将根据 sasl.jaas.config 中的配置登录。如果 URL 基于文件,它指定一个包含由 OAuth/OIDC 身份提供程序发布的访问令牌(在 JWT 序列化形式)的文件,以用于授权。

security.protocol

Type: string
Default: PLAINTEXT
Valid Values: [PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL]
Importance: medium

用于与代理通信的协议。有效值为: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL.

send.buffer.bytes

type: int
Default: 131072 (128 kibibytes)
Valid Values: [-1,…​]
Importance: medium

在发送数据时使用的 TCP 发送缓冲区的大小(SO_SNDBUF)。如果值为 -1,则会使用 OS 默认值。

socket.connection.setup.timeout.max.ms

Type: long
Default: 30000 (30 秒)
Importance: medium

客户端将等待套接字连接建立的最长时间。对于每个连续连接失败,连接设置超时将以指数级增长到此最大值。为避免连接失败,0.2 的随机因素将应用于超时,导致在计算值高于计算值的 20% 到 20% 之间的随机范围。

socket.connection.setup.timeout.ms

Type: long
Default: 10000 (10 秒)
Importance: medium

客户端将等待套接字连接建立的时间。如果在超时前没有构建连接,客户端将关闭套接字频道。

ssl.enabled.protocols

type: list
Default: TLSv1.2,TLSv1.3
Importance: medium

为 SSL 连接启用的协议列表。使用 Java 11 或更高版本 'TLSv1.2' 运行时,默认为 'TLSv1.2'。使用 Java 11 的默认值,如果客户端和服务器同时支持 TLSv1.3,则客户端和服务器将首选 TLSv1.3,否则将回退到 TLSv1.2(假设两者都至少支持 TLSv1.2)。这个默认值对于大多数情况来说应该可以正常工作。另请参阅 ssl.protocol 的配置文档。

ssl.keystore.type

type: string
Default: JKS
Importance: medium

密钥存储文件的文件格式。这对客户端是可选的。默认 ssl.engine.factory.class 目前支持的值是 [JKS, PKCS12, PEM]。

ssl.protocol

type: string
Default: TLSv1.3
Importance: medium

用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更高版本 'TLSv1.2' 运行时,默认为 'TLSv1.3'。这个值应该适用于大多数用例。最近的 JVM 中的允许值为 'TLSv1.2' 和 'TLSv1.3'。'TLS', 'TLSv1.1', 'SSL', 'SSLv2' 和 'SSLv3' 可能在较旧的 JVM 中被支持,但由于已知的安全漏洞,不建议使用它们的使用。使用这个配置和 'ssl.enabled.protocols' 的默认值,如果服务器不支持 'TLSv1.3',客户端将降级为 'TLSv1.2'。如果此配置被设置为 'TLSv1.2',则客户端将不会使用 'TLSv1.3',即使它是 ssl.enabled.protocols 中的一个值,且服务器只支持 'TLSv1.3'。

ssl.provider

Type: string
Default: null
Importance: medium

用于 SSL 连接的安全提供程序的名称。默认值为 JVM 的默认安全提供程序。

ssl.truststore.type

type: string
Default: JKS
Importance: medium

信任存储文件的文件格式。默认 ssl.engine.factory.class 目前支持的值是 [JKS, PKCS12, PEM]。

auto.include.jmx.reporter

Type: boolean
Default: true
Importance: low

已弃用。即使没有在 metric.reporters 中列出,也自动包含 JmxReporter。此配置将在 Kafka 4.0 中删除,用户应改为将 org.apache.kafka.common.metrics.JmxReporter 包含在 metric.reporters 中,以便启用 JmxReporter。

metadata.max.age.ms

Type: long
Default: 300000 (5 minutes)
Valid Values: [0,…​]
Importance: low

以毫秒为单位的时间,我们强制刷新元数据,即使我们未看到任何分区领导更改来主动发现任何新的代理或分区。

metric.reporters

type: list
Default: ""
Importance: low

用作指标报告器的类列表。通过实施 org.apache.kafka.common.metrics.MetricsReporter 接口,可以插入新指标创建通知的类。JmxReporter 始终包含在注册 JMX 统计数据中。

metrics.num.samples

type: int
Default: 2
Valid Values: [1,…​]
Importance: low

维护到计算指标的示例数量。

metrics.recording.level

type: string
Default: INFO
Valid Values: [INFO, DEBUG, TRACE]
Importance: low

指标的最高记录级别。

metrics.sample.window.ms

Type: long
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: low

计算指标示例的时间窗口。

reconnect.backoff.max.ms

Type: long
Default: 1000 (1 second)
Valid Values: [0,…​]
Importance: low

当重新连接到重复连接失败的代理时,需要等待的最大时间(毫秒)。如果提供,每个主机的 backoff 将为每个连续的连接失败指数增加,直到最高值。在计算 backoff 增长后,会添加 20% 随机的 jitter 以避免连接 storms。

reconnect.backoff.ms

Type: long
Default: 50
Valid Values: [0,…​]
Importance: low

尝试重新连接到给定主机前需要等待的基本时间。这可避免在紧张循环中重复连接到主机。这个 backoff 适用于客户端到代理的所有连接尝试。

retries

type: int
Default: 2147483647
Valid Values: [0,…​,2147483647]
Importance: low

设置大于零的值将导致客户端重新发送任何失败的请求,并出现潜在的临时错误。建议将值设为零或 MAX_VALUE,并使用对应的超时参数来控制客户端应重试请求的时长。

retry.backoff.ms

Type: long
Default: 100
Valid Values: [0,…​]
Importance: low

尝试重试失败的请求前等待的时间。这可避免在某些故障情况下在严格的循环中重复发送请求。

sasl.kerberos.kinit.cmd

type: string
Default: /usr/bin/kinit
Importance: low

Kerberos kinit 命令路径。

sasl.kerberos.min.time.before.relogin

Type: long
Default: 60000
Importance: low

刷新尝试之间的登录线程睡眠时间。

sasl.kerberos.ticket.renew.jitter

Type: double
Default: 0.05
Importance: low

添加到续订时间的随机 jitter 百分比。

sasl.kerberos.ticket.renew.window.factor

Type: double
Default: 0.8
Importance: low

登录线程会处于睡眠状态,直到最后一次刷新到票据到期时间的指定窗口因子被达到,此时它将尝试续订票据。

sasl.login.connect.timeout.ms

Type: int
Default: null
Importance: low

(可选)外部身份验证供应商连接超时的值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。

sasl.login.read.timeout.ms

Type: int
Default: null
Importance: low

(可选)外部身份验证提供程序读取超时的值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.buffer.seconds

Type: short
Default: 300
Valid Values: [0,…​,3600]
Importance: low

刷新凭证时,凭证过期前要维护的缓冲区时间(以秒为单位)。如果刷新的过期时间比缓冲区秒数接近,则会移动刷新以尽可能多地维护缓冲区时间。法律值介于 0 到 3600 之间(1 小时);如果没有指定值,则使用默认值 300 (5 分钟)。如果它们总和超过凭证的剩余生命周期,则这个值和 sasl.login.refresh.min.period.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.min.period.seconds

Type: short
Default: 60
Valid Values: [0,…​,900]
Importance: low

在刷新凭证前,登录刷新线程需要最少的时间(以秒为单位)。法律值介于 0 到 900 (15 分钟);如果没有指定值,则使用默认值 60 (1 分钟)。如果其总和超过凭证的剩余生命周期,则这个值和 sasl.login.refresh.buffer.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.factor

Type: double
Default: 0.8
Valid Values: [0.5,…​,1.0]
Importance: low

登录刷新线程将休眠,直到达到了与凭证生命周期相关的指定窗口因子,在此期间它将尝试刷新凭证。法律值介于 0.5 (50%)和 1.0 (100%)之间,如果未指定值,则使用默认值 0.8 (80%)。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.jitter

Type: double
Default: 0.05
Valid Values: [0.0,…​,0.25]
Importance: low

与凭证生命周期相关的随机 jitter 的最大随机处理量,添加到登录刷新线程的睡眠时间中。法律值介于 0 到 0.25(25%)之间,如果没有指定值,则使用默认值 0.05(5%)。目前仅适用于 OAUTHBEARER。

sasl.login.retry.backoff.max.ms

Type: long
Default: 10000 (10 秒)
Importance: low

(可选)值(可选)值,以毫秒为单位,登录尝试外部身份验证提供程序之间的最长等待时间。login 使用基于 sasl.login.retry.backoff.ms 设置的初始等待时间的 exponential backoff 算法,并在尝试通过 sasl.login.retry.backoff.max.ms 设置指定的最大等待长度之间以等待长度加倍。目前仅适用于 OAUTHBEARER。

sasl.login.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)值(可选)值,以毫秒为单位,用于登录尝试外部身份验证提供程序之间的初始等待。login 使用基于 sasl.login.retry.backoff.ms 设置的初始等待时间的 exponential backoff 算法,并在尝试通过 sasl.login.retry.backoff.max.ms 设置指定的最大等待长度之间以等待长度加倍。目前仅适用于 OAUTHBEARER。

sasl.oauthbearer.clock.skew.seconds

Type: int
Default: 30
Importance: low

(可选)值(以秒为单位)允许 OAuth/OIDC 身份提供程序和代理的时间之间的区别。

sasl.oauthbearer.expected.audience

type: list
Default: null
Importance: low

(可选)代理的以逗号分隔的设置,用于验证为预期受众之一发布的 JWT。JWT 将检查是否有标准的 OAuth "aud" 声明,如果设置了这个值,代理将匹配 JWT 的"aud"声明中的值,以查看是否有完全匹配。如果没有匹配项,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.expected.issuer

Type: string
Default: null
Importance: low

(可选)代理用于验证 JWT 是由预期签发者创建的。JWT 将检查是否有标准的 OAuth"iss"声明,如果设置了这个值,代理将完全与 JWT 的"iss"声明中的内容匹配。如果没有匹配项,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.jwks.endpoint.refresh.ms

Type: long
Default: 3600000 (1 小时)
Importance: low

(可选)值(可选)代理在刷新其 JWKS (JSON Web Key Set)缓存之间等待的时间(以毫秒为单位),其中包含验证 JWT 签名的密钥。

sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms

Type: long
Default: 10000 (10 秒)
Importance: low

(可选)值(可选)值(以毫秒为单位),尝试从外部身份验证供应商检索 JWKS (JSON Web Key Set)之间的最长等待时间。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待时间,在尝试达到由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置指定的最大等待长度之间会重复等待长度。

sasl.oauthbearer.jwks.endpoint.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)值(可选)值,以毫秒为单位,用于来自外部身份验证提供程序的 JWKS (JSON Web Key Set)检索尝试。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待时间,在尝试达到由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置指定的最大等待长度之间会重复等待长度。

sasl.oauthbearer.scope.claim.name

type: string
Default: scope
Importance: low

范围的 OAuth 声明通常命名为"scope",但这(可选)设置可以提供与 JWT 有效负载声明中包含的范围使用不同的名称,如果 OAuth/OIDC 供应商对该声明使用不同的名称。

sasl.oauthbearer.sub.claim.name

type: string
Default: sub
Importance: low

主题的 OAuth 声明通常名为"sub",但这(可选)设置可以提供与 JWT 有效负载声明中包含的主题使用不同的名称,如果 OAuth/OIDC 供应商对该声明使用不同的名称。

security.providers

Type: string
Default: null
Importance: low

可配置的创建者类列表,每个都返回实施安全算法的供应商。这些类应该实施 org.apache.kafka.common.security.auth.SecurityProviderCreator 接口。

ssl.cipher.suites

type: list
Default: null
Importance: low

密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下支持所有可用的密码套件。

ssl.endpoint.identification.algorithm

type: string
Default: https
Importance: low

使用服务器证书验证服务器主机名的端点标识算法。

ssl.engine.factory.class

Type: class
Default: null
Importance: low

用于提供 SSLEngine 对象的 org.apache.kafka.common.security.auth.SslEngineFactory 类型的类。默认值为 org.apache.kafka.common.security.ssl.DefaultSslEngineFactory。

ssl.keymanager.algorithm

type: string
Default: SunX509
Importance: low

用于 SSL 连接的密钥管理器工厂使用的算法。Default 值是为 Java 虚拟机配置的密钥管理器工厂算法。

ssl.secure.random.implementation

Type: string
Default: null
Importance: low

用于 SSL 加密操作的 SecureRandom PRNG 实现。

ssl.trustmanager.algorithm

type: string
Default: PKIX
Importance: low

信任管理器工厂用于 SSL 连接的算法。Default 值是为 Java 虚拟机配置的信任管理器工厂算法。

第 6 章 Kafka Connect 配置属性

config.storage.topic

type: string
Importance: high

存储连接器配置的 Kafka 主题的名称。

group.id

type: string
Importance: high

标识此 worker 所属的 Connect 集群组的唯一字符串。

key.converter

type: class
Importance: high

用于转换 Kafka Connect 格式和写入 Kafka 的序列化形式的转换器类。这控制了从 Kafka 写入或读取的信息中的密钥格式,因为这独立于连接器,允许任何连接器使用任何序列化格式。常见格式示例包括 JSON 和 Avro。

offset.storage.topic

type: string
Importance: high

存储源连接器偏移的 Kafka 主题的名称。

status.storage.topic

type: string
Importance: high

存储连接器和任务状态的 Kafka 主题的名称。

value.converter

type: class
Importance: high

用于转换 Kafka Connect 格式和写入 Kafka 的序列化形式的转换器类。这控制从 Kafka 写入或读取的信息中值的格式,因为这独立于连接器,允许任何连接器使用任何序列化格式。常见格式示例包括 JSON 和 Avro。

bootstrap.servers

type: list
Default: localhost:9092
Importance: high

用于建立到 Kafka 集群的初始连接的主机/端口对列表。客户端将使用此处指定的服务器的所有服务器进行引导 - 此列表仅影响用于发现整套服务器的初始主机。此列表应该采用 host1:port1,host2:port2,…​ 的形式。由于这些服务器仅用于初始连接来发现完整的群集成员(这可能会动态更改),此列表不需要包含完整的服务器集合(但在服务器停机的情况下可能需要多个服务器)。

exactly.once.source.support

type: string
Default: disabled
Valid Values: (case insensitive)[DISABLED, ENABLED, PREPARING]
Importance: high

使用事务写入源记录及其源偏移,以及主动隔离旧任务生成前是否启用对集群中源连接器的完全支持。要在新集群中完全启用实时源支持,请将此属性设置为 'enabled'。要在现有集群上启用支持,首先在集群的每个 worker 上设置为"准备",然后设置为"启用"。滚动升级可用于这两个更改。有关此功能的更多信息,请参阅 完全之后的源支持文档

heartbeat.interval.ms

Type: int
Default: 3000 (3 秒)
Importance: high

使用 Kafka 的组管理功能时,心跳到组协调器之间的预期时间。heartbeat 用于确保 worker 的会话保持活跃状态,并在新成员加入或离开组时进行重新平衡。该值必须小于 session.timeout.ms,但设置的值通常不应超过这个值的 1/3。它甚至可以降低以控制正常重新平衡的预期时间。

rebalance.timeout.ms

Type: int
Default: 60000 (1 minute)
Importance: high

重新平衡后,每个 worker 允许的最大时间加入组。这基本上是所有任务清除任何待处理数据和提交偏移所需的时间的限制。如果超过超时,则 worker 将从组中删除,这会导致偏移提交失败。

session.timeout.ms

Type: int
Default: 10000 (10 秒)
Importance: high

用于检测 worker 故障的超时。worker 发送定期心跳信号,以指示其到代理的存活度。如果在此会话超时过期前代理没有接收心跳,则代理将从组中删除 worker 并启动重新平衡。请注意,该值必须在允许范围内,由 group.min.session.timeout.msgroup.max.session.timeout.ms 进行配置。

ssl.key.password

Type: password
Default: null
Importance: high

密钥存储文件或 'ssl.keystore.key' 中指定的 PEM 密钥中的私钥密码。

ssl.keystore.certificate.chain

Type: password
Default: null
Importance: high

使用由 'ssl.keystore.type" 指定的格式的证书链。默认 SSL 引擎工厂只支持带有 X.509 证书列表的 PEM 格式。

ssl.keystore.key

Type: password
Default: null
Importance: high

使用 'ssl.keystore.type" 指定的格式的私钥。默认 SSL 引擎工厂只支持带有 PKCS#8 密钥的 PEM 格式。如果密钥加密,则必须使用 'ssl.key.password' 指定密钥密码。

ssl.keystore.location

Type: string
Default: null
Importance: high

密钥存储文件的位置。这是可选的,可用于客户端双向身份验证。

ssl.keystore.password

Type: password
Default: null
Importance: high

密钥存储文件的存储密码。这适用于客户端,只有在配置了 'ssl.keystore.location' 时才需要。PEM 格式不支持密钥存储密码。

ssl.truststore.certificates

Type: password
Default: null
Importance: high

可信证书,格式为 'ssl.truststore.type'。默认 SSL 引擎工厂仅支持使用 X.509 证书使用 PEM 格式。

ssl.truststore.location

Type: string
Default: null
Importance: high

信任存储文件的位置。

ssl.truststore.password

Type: password
Default: null
Importance: high

信任存储文件的密码。如果没有设置密码,则仍将使用配置的信任存储文件,但会禁用完整性检查。PEM 格式不支持信任存储密码。

client.dns.lookup

type: string
Default: use_all_dns_ips
Valid Values: [use_all_dns_ips, resolve_canonical_bootstrap_servers_only]
Importance: medium

控制客户端如何使用 DNS 查找。如果设置为 use_all_dns_ips,按顺序连接到每个返回的 IP 地址,直到成功建立连接为止。断开连接后,会使用下一个 IP。使用了所有 IP 后,客户端会再次从主机名( JVM 和 OS 缓存 DNS 名称查找)解析 IP 地址。如果设置为 resolve_canonical_bootstrap_servers_only,请将每个 bootstrap 地址解析为规范名称列表。在 bootstrap 阶段后,这与 use_all_dns_ips 相同。

connections.max.idle.ms

Type: long
Default: 540000 (9 分钟)
Importance: medium

在此配置指定的毫秒数后关闭闲置连接。

connector.client.config.override.policy

type: string
Default: All
Importance: medium

ConnectorClientConfigOverridePolicy 的类名称或别名。定义连接器可覆盖哪些客户端配置。默认实现是 All,即连接器配置可以覆盖所有客户端属性。框架中的其他可能策略包括 None 来禁止连接者覆盖客户端属性,和 Principal 来允许连接者只能覆盖客户端的主体。

receive.buffer.bytes

type: int
Default: 32768 (32 kibibytes)
Valid Values: [0,…​]
Importance: medium

读取数据时使用的 TCP 接收缓冲区的大小(SO_RCVBUF)。如果值为 -1,则会使用 OS 默认值。

request.timeout.ms

type: int
Default: 40000 (40 seconds)
Valid Values: [0,…​]
Importance: medium

配置控制客户端等待请求响应的最长时间。如果响应在超时前收到,客户端会在必要时重新发送请求,或者在重试已耗尽时失败请求。

sasl.client.callback.handler.class

Type: class
Default: null
Importance: medium

实现 AuthenticateCallbackHandler 接口的 SASL 客户端回调处理器类的完全限定名称。

sasl.jaas.config

Type: password
Default: null
Importance: medium

用于 SASL 连接的 JAAS 登录上下文参数,其格式由 JAAS 配置文件使用的格式。JAAS 配置文件格式描述 在此处。值的格式是: loginModuleClass controlFlag (optionName=optionValue)*;。对于代理,配置必须在小写中带有监听前缀和 SASL 机制名称前缀。例如: listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule;.

sasl.kerberos.service.name

Type: string
Default: null
Importance: medium

Kafka 运行的 Kerberos 主体名称。这可以在 Kafka 的 JAAS 配置或 Kafka 配置中定义。

sasl.login.callback.handler.class

Type: class
Default: null
Importance: medium

实现 AuthenticateCallbackHandler 接口的 SASL 登录回调处理器类的完全限定名称。对于代理,登录回调处理器配置必须以监听器前缀和 SASL 机制名称作为前缀作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler。

sasl.login.class

Type: class
Default: null
Importance: medium

实现 Login 接口的类的完全限定名称。对于代理,登录配置必须在小写中带有监听前缀和 SASL 机制名称前缀。For example, listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin.

sasl.mechanism

type: string
Default: GSSAPI
Importance: medium

用于客户端连接的 SASL 机制。这可能是提供安全提供程序的任何机制。GSSAPI 是默认机制。

sasl.oauthbearer.jwks.endpoint.url

Type: string
Default: null
Importance: medium

从中检索提供程序 JWKS (JSON Web Key Set) 的 OAuth/OIDC 供应商 URL。URL 可以是基于 HTTP (S)或基于文件的 URL。如果 URL 基于 HTTP (S),则 JWKS 数据将通过代理启动时配置的 URL 从 OAuth/OIDC 供应商中检索。所有 then-current 密钥都将缓存到代理上,用于传入的请求。如果为 JWT 收到身份验证请求,其中包含尚未在缓存中"kid"标头声明值,则 JWKS 端点将根据需要重新查询。但是,代理在每个 sasl.oauthbearer.jwks.endpoint.refresh.ms 毫秒中轮询 URL,以便在收到包含它们的 JWT 请求前使用任何即将刷新缓存。如果 URL 基于文件,代理将在启动时从配置的位置加载 JWKS 文件。如果 JWT 包含不在 JWKS 文件中的"kid"标头值,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.token.endpoint.url

Type: string
Default: null
Importance: medium

OAuth/OIDC 身份提供程序的 URL。如果 URL 基于 HTTP (S),则它是签发者的令牌端点 URL,请求将根据 sasl.jaas.config 中的配置登录。如果 URL 基于文件,它指定一个包含由 OAuth/OIDC 身份提供程序发布的访问令牌(在 JWT 序列化形式)的文件,以用于授权。

security.protocol

Type: string
Default: PLAINTEXT
Valid Values: [PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL]
Importance: medium

用于与代理通信的协议。有效值为: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL.

send.buffer.bytes

type: int
Default: 131072 (128 kibibytes)
Valid Values: [0,…​]
Importance: medium

在发送数据时使用的 TCP 发送缓冲区的大小(SO_SNDBUF)。如果值为 -1,则会使用 OS 默认值。

ssl.enabled.protocols

type: list
Default: TLSv1.2,TLSv1.3
Importance: medium

为 SSL 连接启用的协议列表。使用 Java 11 或更高版本 'TLSv1.2' 运行时,默认为 'TLSv1.2'。使用 Java 11 的默认值,如果客户端和服务器同时支持 TLSv1.3,则客户端和服务器将首选 TLSv1.3,否则将回退到 TLSv1.2(假设两者都至少支持 TLSv1.2)。这个默认值对于大多数情况来说应该可以正常工作。另请参阅 ssl.protocol 的配置文档。

ssl.keystore.type

type: string
Default: JKS
Importance: medium

密钥存储文件的文件格式。这对客户端是可选的。默认 ssl.engine.factory.class 目前支持的值是 [JKS, PKCS12, PEM]。

ssl.protocol

type: string
Default: TLSv1.3
Importance: medium

用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更高版本 'TLSv1.2' 运行时,默认为 'TLSv1.3'。这个值应该适用于大多数用例。最近的 JVM 中的允许值为 'TLSv1.2' 和 'TLSv1.3'。'TLS', 'TLSv1.1', 'SSL', 'SSLv2' 和 'SSLv3' 可能在较旧的 JVM 中被支持,但由于已知的安全漏洞,不建议使用它们的使用。使用这个配置和 'ssl.enabled.protocols' 的默认值,如果服务器不支持 'TLSv1.3',客户端将降级为 'TLSv1.2'。如果此配置被设置为 'TLSv1.2',则客户端将不会使用 'TLSv1.3',即使它是 ssl.enabled.protocols 中的一个值,且服务器只支持 'TLSv1.3'。

ssl.provider

Type: string
Default: null
Importance: medium

用于 SSL 连接的安全提供程序的名称。默认值为 JVM 的默认安全提供程序。

ssl.truststore.type

type: string
Default: JKS
Importance: medium

信任存储文件的文件格式。默认 ssl.engine.factory.class 目前支持的值是 [JKS, PKCS12, PEM]。

worker.sync.timeout.ms

type: int
Default: 3000 (3 秒)
Importance: medium

当 worker 没有与其他 worker 同步且需要重新同步配置时,请在放弃前等待这个时间,保留组,并在重新加入前等待 backoff 周期。

worker.unsync.backoff.ms

Type: int
Default: 300000 (5 minutes)
Importance: medium

当 worker 没有与其他 worker 同步且无法在 worker.sync.timeout.ms 中捕获时,请保留 Connect 集群,然后再重新加入。

access.control.allow.methods

type: string
Default: ""
Importance: low

通过设置 Access-Control-Allow-Methods 标头来设置跨源请求支持的方法。Access-Control-Allow-Methods 标头的默认值允许 GET、POST 和 HEAD 的跨源请求。

access.control.allow.origin

type: string
Default: ""
Importance: low

为 REST API 请求将 Access-Control-Allow-Origin 标头设置为。要启用跨源访问,请将其设置为允许访问 API 的应用程序的域,或 '*' 允许从任何域进行访问。默认值仅允许从 REST API 域进行访问。

admin.listeners

type: list
Default: null
Valid Values: 以逗号分隔的 URL 列表,ex: http://localhost:8080,https://localhost:8443.
Importance: low

Admin REST API 将要侦听的、以逗号分隔的 URI 列表。支持的协议有 HTTP 和 HTTPS。空白字符串将禁用此功能。默认行为是使用常规监听程序(由 'listeners' 属性指定)。

auto.include.jmx.reporter

Type: boolean
Default: true
Importance: low

已弃用。即使没有在 metric.reporters 中列出,也自动包含 JmxReporter。此配置将在 Kafka 4.0 中删除,用户应改为将 org.apache.kafka.common.metrics.JmxReporter 包含在 metric.reporters 中,以便启用 JmxReporter。

client.id

type: string
Default: ""
Importance: low

在发出请求时传递给服务器的 id 字符串。这样做的目的是通过允许将逻辑应用程序名称包含在服务器端请求日志中来跟踪超过 ip/port 的请求源。

config.providers

type: list
Default: ""
Importance: low

以逗号分隔的 ConfigProvider 类名称,按指定的顺序加载和使用。通过实施 interface ConfigProvider,您可以替换连接器配置中的变量引用,如外部化 secret。

config.storage.replication.factor

Description: short
Default: 3
Valid Values: Positive number not than Kafka 集群中的代理数量,或者 -1 使用代理的默认
导入 low

创建配置存储主题时使用的复制因素。

connect.protocol

type: string
Default: sessioned
Valid Values: [eager, compatible, sessioned]
Importance: low

Kafka 连接协议的兼容性模式。

header.converter

type: class
Default: org.apache.kafka.connect.storage.SimpleHeaderConverter
Importance: low

HeaderConverter 类,用于转换 Kafka Connect 格式和写入 Kafka 的序列化表单。这控制了从 Kafka 写入或读取的信息中的标头值格式,因为这独立于连接器,允许任何连接器使用任何序列化格式。常见格式示例包括 JSON 和 Avro。默认情况下,SimpleHeaderConverter 用于将标头值序列化为字符串,并通过推断 schema 来反序列化它们。

inter.worker.key.generation.algorithm

type: string
Default: HmacSHA256
Valid Values: worker JVM
Importance: low 支持的任何 KeyGenerator 算法

用于生成内部请求密钥的算法。算法 'HmacSHA256' 将用作支持它的 JVM 的默认算法;在使用其他 JVM 中,不使用默认值,并在 worker 配置中手动指定此属性的值。

inter.worker.key.size

Type: int
Default: null
Importance: low

用于签名内部请求的密钥大小(以位为单位)。如果为 null,则使用密钥生成算法的默认密钥大小。

inter.worker.key.ttl.ms

type: int
Default: 3600000 (1 小时)
Valid Values: [0,…​,2147483647]
Importance: low

用于内部请求验证(以毫秒为单位)生成的会话密钥的 TTL。

inter.worker.signature.algorithm

type: string
Default: HmacSHA256
Valid Values: worker JVM
Importance: low 支持的任何 MAC 算法

用于为内部请求算法 'inter.worker.signature.algorithm' 的算法将被用作支持它的 JVM 的默认算法;在其他 JVM 上,不使用默认值,且必须在 worker 配置中手动指定此属性的值。

inter.worker.verification.algorithms

type: list
Default: HmacSHA256
Valid Values: 一个或多个 MAC 算法的列表,每个算法都由 worker JVM
导入: low

验证内部请求的允许算法列表,它必须包含用于 inter.worker.signature.algorithm 属性的算法。该算法 '[HmacSHA256]' 将用作提供它们的 JVM 的默认算法;在其他 JVM 上,不使用默认值,并在 worker 配置中手动指定此属性的值。

监听器

type: list
Default: http://:8083
Valid Values: 列表用逗号分开的 URL, ex: http://localhost:8080,https://localhost:8443.
Importance: low

REST API 将要侦听的、以逗号分隔的 URI 列表。支持的协议有 HTTP 和 HTTPS。将 hostname 指定为 0.0.0.0 以绑定到所有接口。将 hostname 留空给默认接口。法律侦听器列表示例: HTTP://myhost:8083,HTTPS://myhost:8084。

metadata.max.age.ms

Type: long
Default: 300000 (5 minutes)
Valid Values: [0,…​]
Importance: low

以毫秒为单位的时间,我们强制刷新元数据,即使我们未看到任何分区领导更改来主动发现任何新的代理或分区。

metric.reporters

type: list
Default: ""
Importance: low

用作指标报告器的类列表。通过实施 org.apache.kafka.common.metrics.MetricsReporter 接口,可以插入新指标创建通知的类。JmxReporter 始终包含在注册 JMX 统计数据中。

metrics.num.samples

type: int
Default: 2
Valid Values: [1,…​]
Importance: low

维护到计算指标的示例数量。

metrics.recording.level

type: string
Default: INFO
Valid Values: [INFO, DEBUG]
Importance: low

指标的最高记录级别。

metrics.sample.window.ms

Type: long
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: low

计算指标示例的时间窗口。

offset.flush.interval.ms

Type: long
Default: 60000 (1 minute)
Importance: low

尝试为任务提交偏移的时间间隔。

offset.flush.timeout.ms

Type: long
Default: 5000 (5 秒)
Importance: low

在取消进程并恢复将来尝试中的偏移数据前,等待记录刷新和分区偏移数据的最大毫秒数。此属性对使用完全支持运行的源连接器没有影响。

offset.storage.partitions

type: int
Default: 25
Valid Values: Positive number, 或 -1 来使用代理的默认
导入: low

创建偏移存储主题时使用的分区数量。

offset.storage.replication.factor

Description: short
Default: 3
Valid Values: Positive number not than Kafka 集群中的代理数量,或者 -1 使用代理的默认
导入 low

创建偏移存储主题时使用的复制因素。

plugin.path

type: list
Default: null
Importance: low

使用逗号分开的路径列表(,),其中包含插件(连接器、转换器、转换)。该列表应包含顶层目录,其中包含任何组合:a)目录,其中紧包含有插件及其依赖项 B 的 jar 目录。uber-jars (带有插件及其依赖项)目录会立即包含插件类及其依赖项结构的软件包目录结构,请注意:符号链接将遵循相应的依赖项或插件。示例: plugin.path=/usr/local/share/java,/usr/local/share/kafka/plugins,/opt/connectors Do not use config provider variables,因为原始路径供 worker 的扫描程序用于替换变量。

reconnect.backoff.max.ms

Type: long
Default: 1000 (1 second)
Valid Values: [0,…​]
Importance: low

当重新连接到重复连接失败的代理时,需要等待的最大时间(毫秒)。如果提供,每个主机的 backoff 将为每个连续的连接失败指数增加,直到最高值。在计算 backoff 增长后,会添加 20% 随机的 jitter 以避免连接 storms。

reconnect.backoff.ms

Type: long
Default: 50
Valid Values: [0,…​]
Importance: low

尝试重新连接到给定主机前需要等待的基本时间。这可避免在紧张循环中重复连接到主机。这个 backoff 适用于客户端到代理的所有连接尝试。

response.http.headers.config

type: string
Default: ""
Valid Values: Comma- separated header rules,其中每个标头规则都是 '[action] [header name]:[header value]',并在标头规则中的任何部分包含逗号
Importance: low,并选择性地被双引号包括: low

REST API HTTP 响应标头规则。

rest.advertised.host.name

Type: string
Default: null
Importance: low

如果设置了此设置,这是提供给其他 worker 连接的主机名。

rest.advertised.listener

Type: string
Default: null
Importance: low

设置提供给其他 worker 的公告监听程序(HTTP 或 HTTPS)。

rest.advertised.port

Type: int
Default: null
Importance: low

如果设置了此设置,这是提供给其他 worker 以进行连接的端口。

rest.extension.classes

type: list
Default: ""
Importance: low

以逗号分隔的 ConnectRestExtension 类名称,按照指定的顺序载入并调用。通过实施接口 ConnectRestExtension,您可以注入到 Connect 的 REST API 用户定义的资源,如过滤器。通常用于添加自定义功能,如日志记录、安全等。

retry.backoff.ms

Type: long
Default: 100
Valid Values: [0,…​]
Importance: low

尝试重试失败的请求到给定主题分区前等待的时间。这可避免在某些故障情况下在严格的循环中重复发送请求。

sasl.kerberos.kinit.cmd

type: string
Default: /usr/bin/kinit
Importance: low

Kerberos kinit 命令路径。

sasl.kerberos.min.time.before.relogin

Type: long
Default: 60000
Importance: low

刷新尝试之间的登录线程睡眠时间。

sasl.kerberos.ticket.renew.jitter

Type: double
Default: 0.05
Importance: low

添加到续订时间的随机 jitter 百分比。

sasl.kerberos.ticket.renew.window.factor

Type: double
Default: 0.8
Importance: low

登录线程会处于睡眠状态,直到最后一次刷新到票据到期时间的指定窗口因子被达到,此时它将尝试续订票据。

sasl.login.connect.timeout.ms

Type: int
Default: null
Importance: low

(可选)外部身份验证供应商连接超时的值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。

sasl.login.read.timeout.ms

Type: int
Default: null
Importance: low

(可选)外部身份验证提供程序读取超时的值(以毫秒为单位)。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.buffer.seconds

Type: short
Default: 300
Valid Values: [0,…​,3600]
Importance: low

刷新凭证时,凭证过期前要维护的缓冲区时间(以秒为单位)。如果刷新的过期时间比缓冲区秒数接近,则会移动刷新以尽可能多地维护缓冲区时间。法律值介于 0 到 3600 之间(1 小时);如果没有指定值,则使用默认值 300 (5 分钟)。如果它们总和超过凭证的剩余生命周期,则这个值和 sasl.login.refresh.min.period.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.min.period.seconds

Type: short
Default: 60
Valid Values: [0,…​,900]
Importance: low

在刷新凭证前,登录刷新线程需要最少的时间(以秒为单位)。法律值介于 0 到 900 (15 分钟);如果没有指定值,则使用默认值 60 (1 分钟)。如果其总和超过凭证的剩余生命周期,则这个值和 sasl.login.refresh.buffer.seconds 都会被忽略。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.factor

Type: double
Default: 0.8
Valid Values: [0.5,…​,1.0]
Importance: low

登录刷新线程将休眠,直到达到了与凭证生命周期相关的指定窗口因子,在此期间它将尝试刷新凭证。法律值介于 0.5 (50%)和 1.0 (100%)之间,如果未指定值,则使用默认值 0.8 (80%)。目前仅适用于 OAUTHBEARER。

sasl.login.refresh.window.jitter

Type: double
Default: 0.05
Valid Values: [0.0,…​,0.25]
Importance: low

与凭证生命周期相关的随机 jitter 的最大随机处理量,添加到登录刷新线程的睡眠时间中。法律值介于 0 到 0.25(25%)之间,如果没有指定值,则使用默认值 0.05(5%)。目前仅适用于 OAUTHBEARER。

sasl.login.retry.backoff.max.ms

Type: long
Default: 10000 (10 秒)
Importance: low

(可选)值(可选)值,以毫秒为单位,登录尝试外部身份验证提供程序之间的最长等待时间。login 使用基于 sasl.login.retry.backoff.ms 设置的初始等待时间的 exponential backoff 算法,并在尝试通过 sasl.login.retry.backoff.max.ms 设置指定的最大等待长度之间以等待长度加倍。目前仅适用于 OAUTHBEARER。

sasl.login.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)值(可选)值,以毫秒为单位,用于登录尝试外部身份验证提供程序之间的初始等待。login 使用基于 sasl.login.retry.backoff.ms 设置的初始等待时间的 exponential backoff 算法,并在尝试通过 sasl.login.retry.backoff.max.ms 设置指定的最大等待长度之间以等待长度加倍。目前仅适用于 OAUTHBEARER。

sasl.oauthbearer.clock.skew.seconds

Type: int
Default: 30
Importance: low

(可选)值(以秒为单位)允许 OAuth/OIDC 身份提供程序和代理的时间之间的区别。

sasl.oauthbearer.expected.audience

type: list
Default: null
Importance: low

(可选)代理的以逗号分隔的设置,用于验证为预期受众之一发布的 JWT。JWT 将检查是否有标准的 OAuth "aud" 声明,如果设置了这个值,代理将匹配 JWT 的"aud"声明中的值,以查看是否有完全匹配。如果没有匹配项,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.expected.issuer

Type: string
Default: null
Importance: low

(可选)代理用于验证 JWT 是由预期签发者创建的。JWT 将检查是否有标准的 OAuth"iss"声明,如果设置了这个值,代理将完全与 JWT 的"iss"声明中的内容匹配。如果没有匹配项,代理将拒绝 JWT,身份验证将失败。

sasl.oauthbearer.jwks.endpoint.refresh.ms

Type: long
Default: 3600000 (1 小时)
Importance: low

(可选)值(可选)代理在刷新其 JWKS (JSON Web Key Set)缓存之间等待的时间(以毫秒为单位),其中包含验证 JWT 签名的密钥。

sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms

Type: long
Default: 10000 (10 秒)
Importance: low

(可选)值(可选)值(以毫秒为单位),尝试从外部身份验证供应商检索 JWKS (JSON Web Key Set)之间的最长等待时间。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待时间,在尝试达到由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置指定的最大等待长度之间会重复等待长度。

sasl.oauthbearer.jwks.endpoint.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)值(可选)值,以毫秒为单位,用于来自外部身份验证提供程序的 JWKS (JSON Web Key Set)检索尝试。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待时间,在尝试达到由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置指定的最大等待长度之间会重复等待长度。

sasl.oauthbearer.scope.claim.name

type: string
Default: scope
Importance: low

范围的 OAuth 声明通常命名为"scope",但这(可选)设置可以提供与 JWT 有效负载声明中包含的范围使用不同的名称,如果 OAuth/OIDC 供应商对该声明使用不同的名称。

sasl.oauthbearer.sub.claim.name

type: string
Default: sub
Importance: low

主题的 OAuth 声明通常名为"sub",但这(可选)设置可以提供与 JWT 有效负载声明中包含的主题使用不同的名称,如果 OAuth/OIDC 供应商对该声明使用不同的名称。

scheduled.rebalance.max.delay.ms

type: int
Default: 300000 (5 minutes)
Valid Values: [0,…​,2147483647]
Importance: low

调度的最大延迟时间,以等待一个或多个取消部分 worker 返回,然后再重新平衡并将其连接器和任务重新分配给组。在此期间,已分离的 worker 的连接器和任务仍保持未分配。

socket.connection.setup.timeout.max.ms

Type: long
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: low

客户端将等待套接字连接建立的最长时间。对于每个连续连接失败,连接设置超时将以指数级增长到此最大值。为避免连接失败,0.2 的随机因素将应用于超时,导致在计算值高于计算值的 20% 到 20% 之间的随机范围。

socket.connection.setup.timeout.ms

Type: long
Default: 10000 (10 秒)
Valid Values: [0,…​]
Importance: low

客户端将等待套接字连接建立的时间。如果在超时前没有构建连接,客户端将关闭套接字频道。

ssl.cipher.suites

type: list
Default: null
Importance: low

密码套件列表。这是身份验证、加密、MAC 和密钥交换算法的命名组合,用于使用 TLS 或 SSL 网络协议协商网络连接的安全设置。默认情况下支持所有可用的密码套件。

ssl.client.auth

type: string
Default: none
Valid Values: [required, requested, none]
Importance: low

配置 kafka 代理以请求客户端身份验证。以下设置很常见:

  • ssl.client.auth=required if set to required client authentication required.
  • ssl.client.auth=requested 意味着客户端身份验证是可选的。如果需要,如果设置此选项,客户端可以选择不提供有关其自身的身份验证信息
  • SSL.client.auth=none 意味着不需要客户端身份验证。
ssl.endpoint.identification.algorithm

type: string
Default: https
Importance: low

使用服务器证书验证服务器主机名的端点标识算法。

ssl.engine.factory.class

Type: class
Default: null
Importance: low

用于提供 SSLEngine 对象的 org.apache.kafka.common.security.auth.SslEngineFactory 类型的类。默认值为 org.apache.kafka.common.security.ssl.DefaultSslEngineFactory。

ssl.keymanager.algorithm

type: string
Default: SunX509
Importance: low

用于 SSL 连接的密钥管理器工厂使用的算法。Default 值是为 Java 虚拟机配置的密钥管理器工厂算法。

ssl.secure.random.implementation

Type: string
Default: null
Importance: low

用于 SSL 加密操作的 SecureRandom PRNG 实现。

ssl.trustmanager.algorithm

type: string
Default: PKIX
Importance: low

信任管理器工厂用于 SSL 连接的算法。Default 值是为 Java 虚拟机配置的信任管理器工厂算法。

status.storage.partitions

type: int
Default: 5
Valid Values: Positive number, 或 -1 来使用代理的默认
导入: low

创建状态存储主题时使用的分区数量。

status.storage.replication.factor

Description: short
Default: 3
Valid Values: Positive number not than Kafka 集群中的代理数量,或者 -1 使用代理的默认
导入 low

创建状态存储主题时使用的复制因素。

task.shutdown.graceful.timeout.ms

Type: long
Default: 5000 (5 秒)
Importance: low

等待任务正常关闭的时间。这是总时间,而不是每个任务。所有任务都触发了关闭,然后按顺序等待它们。

topic.creation.enable

Type: boolean
Default: true
Importance: low

当源连接器配置了 topic.creation. 属性时,是否允许自动创建源连接器。每个任务都将使用 admin 客户端创建其主题,且不会依赖于 Kafka 代理自动创建主题。

topic.tracking.allow.reset

Type: boolean
Default: true
Importance: low

如果设置为 true,则允许用户请求每个连接器重置活跃主题集合。

topic.tracking.enable

Type: boolean
Default: true
Importance: low

启用在运行时跟踪每个连接器的活动主题集合。

第 7 章 Kafka Streams 配置属性

application.id

type: string
Importance: high

流处理应用程序的标识符。在 Kafka 集群中必须是唯一的。它被用作 1)默认的 client-id 前缀 2,用于成员资格管理的 group-id,3)changelog 主题前缀。

bootstrap.servers

type: list
Importance: high

用于建立到 Kafka 集群的初始连接的主机/端口对列表。客户端将使用此处指定的服务器的所有服务器进行引导 - 此列表仅影响用于发现整套服务器的初始主机。此列表应该采用 host1:port1,host2:port2,…​ 的形式。由于这些服务器仅用于初始连接来发现完整的群集成员(这可能会动态更改),此列表不需要包含完整的服务器集合(但在服务器停机的情况下可能需要多个服务器)。

num.standby.replicas

Type: int
Default: 0
Importance: high

每个任务的待机副本数。

state.dir

type: string
Default: /tmp/kafka-streams
Importance: high

状态存储的目录位置。共享同一底层文件系统的每个流实例都需要此路径。

acceptable.recovery.lag

Type: long
Default: 10000
Valid Values: [0,…​]
Importance: medium

可接受的最大 lag (用于捕获的偏移数)使客户端被视为立即捕获,以接收活跃的任务分配。在分配后,它仍然会在处理前恢复更改日志的其余部分。为了避免在重新平衡期间暂停处理,此配置应与给定工作负载的一分钟内良好恢复时间对应。必须至少为 0。

cache.max.bytes.buffering

Type: long
Default: 10485760
Valid Values: [0,…​]
Importance: medium

用于在所有线程间缓冲的最大内存字节数。

client.id

type: string
Default: ""
Importance: medium

用于内部消费者、生成者和恢复消费者的客户端 ID 的 ID 前缀字符串,其模式为 < client.id>-StreamThread-<threadSequenceNumber$gt;-<consumer|producer|restore-consumer >。

default.deserialization.exception.handler

type: class
Default: org.apache.kafka.streams.errors.LogAndFailExceptionHandler
Importance: medium

实现 org.apache.kafka.streams.errors.DeserializationExceptionHandler 接口的异常处理类。

default.key.serde

Type: class
Default: null
Importance: medium

默认 serializer / deserializer 类用于实施 org.apache.kafka.common.serialization.Serde 接口的密钥。请注意,当使用 windowed serde 类时,需要通过 'default.windowed.key.serde.inner' 或 'default.windowed.serde 接口设置实现 org.apache.kafka.common.serialization.Serde.key.serde.inner' 或 'default.windowed.value.serde.

default.list.key.serde.inner

Type: class
Default: null
Importance: medium

默认内部类是实施 org.apache.kafka.common.serialization.Serde 接口的关键。只有在 default.key.serde 配置被设置为 org.apache.kafka.common.serialization.Serdes.ListSerde 时,此配置才会被读取。

default.list.key.serde.type

Type: class
Default: null
Importance: medium

用于实施 java.util.List 接口的密钥的默认类。只有在将 default.key.serde 配置设置为 org.apache.kafka.common.serialization.Serdes.ListSerde note when list serde class when when list serde class 时,需要设置通过 'default.list.keyserdener serde.inner' 实施 org.apache.kafka.common.serialization.Serde 接口时的 inner serde 类。

default.list.value.serde.inner

Type: class
Default: null
Importance: medium

默认内部类是实施 org.apache.kafka.common.serialization.Serde 接口的值。只有在 default.value.serde 配置被设置为 org.apache.kafka.common.serialization.Serdes.ListSerde 时,此配置才会被读取。

default.list.value.serde.type

Type: class
Default: null
Importance: medium

用于实现 java.util.List 接口的值的默认类。只有在 default.value.serde 配置且只有这个设置被设置为 org.apache.kafka.common.serialization.Serdes.ListSerde 是才会从这个配置中读取。请注意,当使用 list serde 类时,一个需要设置 inner serde 类,它实现了 org.apache.kafka.common.serialization.Serde 接口(通过 'default.list.value.serde.inner')。

default.production.exception.handler

type: class
Default: org.apache.kafka.streams.errors.DefaultProductionExceptionHandler
Importance: medium

实现 org.apache.kafka.streams.errors.ProductionExceptionHandler 接口的异常处理类。

default.timestamp.extractor

type: class
Default: org.apache.kafka.streams.processor.FailOnInvalidTimestamp
Importance: medium

实现 org.apache.kafka.streams.processor.TimestampExtractor 接口的默认时间戳提取器类。

default.value.serde

Type: class
Default: null
Importance: medium

默认 serializer / deserializer 类用于实现 org.apache.kafka.common.serialization.Serde 接口的值。请注意,当使用 windowed serde 类时,需要通过 'default.windowed.key.serde.inner' 或 'default.windowed.serde 接口设置实现 org.apache.kafka.common.serialization.Serde.key.serde.inner' 或 'default.windowed.value.serde.

max.task.idle.ms

Type: long
Default: 0
Importance: medium

此配置控制加入和合并是否可能会产生不排序的结果。config 值是当流任务完全在一些(但不是所有)输入分区上完全捕获时,流任务将保持闲置的最大时间(以毫秒为单位),以等待制作者发送额外的记录,并避免在多个输入流中潜在的边界记录处理。默认(零)不会等待制作者发送更多记录,但会等待代理上已存在的数据。这个默认意味着,对于代理上已存在的记录,流会按照时间戳顺序处理它们。设置为 -1,以禁用完全闲置,并处理任何本地可用的数据,即使这样做可能会生成超出顺序处理。

max.warmup.replicas

type: int
Default: 2
Valid Values: [1,…​]
Importance: medium

可以同时分配最多的 warmup 副本数(除配置的 num.standby 之外的额外待机),以便在一个实例上保持任务可用,但它被重新分配到另一个实例。用于限制可用于高可用性的额外代理流量和集群状态。必须至少为 1.

num.stream.threads

Type: int
Default: 1
Importance: medium

执行流处理的线程数量。

processing.guarantee

type: string
Default: at_least_once
Valid Values: [at_least_once, exactly_once, exactly_once_beta, exactly_once_v2]
Importance: medium

处理保证应使用。可能的值有 at_least_once (默认)和 exactly_once_v2 (需要代理版本 2.5 或更高版本)。弃用的选项 exactly_once (需要代理版本 0.11.0 或更高版本)和 exactly_once_beta (需要代理版本 2.5 或更高版本)。请注意,完全处理需要至少三个代理的集群,这是生产的建议设置;通过调整代理设置 transaction.state.log.replication.factortransaction.state.log.min.isr

rack.aware.assignment.tags

type: list
Default: ""
Valid Values: List contains maximum of 5 element
Importance: medium

用于在 Kafka Streams 实例之间分布备用副本的客户端标签密钥列表。配置后,Kafka Streams 将让一个 best-effort 在每个客户端标签维度上分发备用任务。

replication.factor

type: int
Default: -\":\"Importance: medium

更改日志主题和由流处理应用程序创建的重新分区主题的复制因素。默认 -1 (主题:使用代理默认复制因子)需要代理版本 2.4 或更新版本。

security.protocol

Type: string
Default: PLAINTEXT
Valid Values: [PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL]
Importance: medium

用于与代理通信的协议。有效值为: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL.

statestore.cache.max.bytes

Type: long
Default: 10485760 (10 mebibytes)
Valid Values: [0,…​]
Importance: medium

在所有线程中用于 statestore 缓存的最大内存字节数。

task.timeout.ms

Type: long
Default: 300000 (5 minutes)
Valid Values: [0,…​]
Importance: medium

任务可能会因为内部错误而停止的最长时间(毫秒)并重试直到引发错误为止。对于 0ms 超时,任务会引发第一个内部错误的错误。对于大于 0ms 的任何超时,任务会在引发错误前至少重试一次。

topology.optimization

type: string
Default: none
Valid Values: org.apache.kafka.streams.StreamsConfig$$Lambda$27/0x0000000840079840@ed17bee
Importance: medium

配置会告知 Kafka Streams (如果应该优化拓扑)以及要应用的优化。可接受的值有:"NO_OPTIMIZATION"、"OPTIMIZE"或以逗号分隔的特定优化列表:("REUSE_KTABLE_SOURCE_TOPICS", "MERGE_REPARTITION_TOPICS" + "SINGLE_STORE_SELF_JOIN+")."NO_OPTIMIZATION"。

application.server

type: string
Default: ""
Importance: low

host:port 对指向用户定义的端点,可用于在此 KafkaStreams 实例中状态存储发现和交互式查询。

auto.include.jmx.reporter

Type: boolean
Default: true
Importance: low

已弃用。即使没有在 metric.reporters 中列出,也自动包含 JmxReporter。此配置将在 Kafka 4.0 中删除,用户应改为将 org.apache.kafka.common.metrics.JmxReporter 包含在 metric.reporters 中,以便启用 JmxReporter。

buffered.records.per.partition

Type: int
Default: 1000
Importance: low

每个分区要缓冲的最大记录数。

built.in.metrics.version

type: string
Default: latest
Valid Values: [latest]
Importance: low

要使用的内置指标的版本。

commit.interval.ms

Type: long
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: low

提交处理进度的频率(毫秒)。对于 in-least-once 处理,提交意味着保存处理器的位置(例如,偏移)。对于完全处理,这意味着要提交包括保存位置的事务,并使提交的数据在输出主题中对具有隔离级别 read_committed 的用户可见。(请注意,如果 processing.guarantee 设置为 exactly_once_v2, exactly_once,则默认值为 100,否则默认值为 30000

connections.max.idle.ms

Type: long
Default: 540000 (9 分钟)
Importance: low

在此配置指定的毫秒数后关闭闲置连接。

default.dsl.store

type: string
Default: rocksDB
Valid Values: [rocksDB, in_memory]
Importance: low

DSL 操作器使用的默认状态存储类型。

metadata.max.age.ms

Type: long
Default: 300000 (5 minutes)
Valid Values: [0,…​]
Importance: low

以毫秒为单位的时间,我们强制刷新元数据,即使我们未看到任何分区领导更改来主动发现任何新的代理或分区。

metric.reporters

type: list
Default: ""
Importance: low

用作指标报告器的类列表。通过实施 org.apache.kafka.common.metrics.MetricsReporter 接口,可以插入新指标创建通知的类。JmxReporter 始终包含在注册 JMX 统计数据中。

metrics.num.samples

type: int
Default: 2
Valid Values: [1,…​]
Importance: low

维护到计算指标的示例数量。

metrics.recording.level

type: string
Default: INFO
Valid Values: [INFO, DEBUG, TRACE]
Importance: low

指标的最高记录级别。

metrics.sample.window.ms

Type: long
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: low

计算指标示例的时间窗口。

poll.ms

Type: long
Default: 100
Importance: low

块等待输入的时间(以毫秒为单位)。

probing.rebalance.interval.ms

Type: long
Default: 600000 (10 minutes)
Valid Values: [60000,…​]
Importance: low

在触发重新平衡来探测完成并准备好激活的 warmup 副本前需要等待的最长时间(毫秒)。探测重新平衡将继续触发,直到分配均衡为止。必须至少为 1 分钟。

receive.buffer.bytes

type: int
Default: 32768 (32 kibibytes)
Valid Values: [-1,…​]
Importance: low

读取数据时使用的 TCP 接收缓冲区的大小(SO_RCVBUF)。如果值为 -1,则会使用 OS 默认值。

reconnect.backoff.max.ms

Type: long
Default: 1000 (1 second)
Valid Values: [0,…​]
Importance: low

当重新连接到重复连接失败的代理时,需要等待的最大时间(毫秒)。如果提供,每个主机的 backoff 将为每个连续的连接失败指数增加,直到最高值。在计算 backoff 增长后,会添加 20% 随机的 jitter 以避免连接 storms。

reconnect.backoff.ms

Type: long
Default: 50
Valid Values: [0,…​]
Importance: low

尝试重新连接到给定主机前需要等待的基本时间。这可避免在紧张循环中重复连接到主机。这个 backoff 适用于客户端到代理的所有连接尝试。

repartition.purge.interval.ms

Type: long
Default: 30000 (30 seconds)
Valid Values: [0,…​]
Importance: low

从重新分区主题中删除完全消耗的记录的频率(毫秒)。在最后一次清除后,清除将至少发生这个值,但可能会延迟到以后。(请注意,与 commit.interval.ms 不同,这个值的默认值在 processing.guarantee 设置为 exactly_once_v2时保持不变。

request.timeout.ms

type: int
Default: 40000 (40 seconds)
Valid Values: [0,…​]
Importance: low

配置控制客户端等待请求响应的最长时间。如果响应在超时前收到,客户端会在必要时重新发送请求,或者在重试已耗尽时失败请求。

retries

type: int
Default: 0
Valid Values: [0,…​,2147483647]
Importance: low

设置大于零的值将导致客户端重新发送任何失败的请求,并出现潜在的临时错误。建议将值设为零或 MAX_VALUE,并使用对应的超时参数来控制客户端应重试请求的时长。

retry.backoff.ms

Type: long
Default: 100
Valid Values: [0,…​]
Importance: low

尝试重试失败的请求到给定主题分区前等待的时间。这可避免在某些故障情况下在严格的循环中重复发送请求。

rocksdb.config.setter

Type: class
Default: null
Importance: low

一个 Rocks DB config setter 类或类名称,用于实现 org.apache.kafka.streams.state.RocksDBConfigSetter 接口。

send.buffer.bytes

type: int
Default: 131072 (128 kibibytes)
Valid Values: [-1,…​]
Importance: low

在发送数据时使用的 TCP 发送缓冲区的大小(SO_SNDBUF)。如果值为 -1,则会使用 OS 默认值。

state.cleanup.delay.ms

Type: long
Default: 600000 (10 分钟)
Importance: low

分区迁移时,在删除状态前等待的时间(毫秒)。仅删除未修改的 state.cleanup.delay.ms 的状态目录。

upgrade.from

Description: string
Default: null
Valid Values: [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]
Importance: low

允许以向后兼容的方式进行升级。从 [0.10.0.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" (用于从对应的旧版本升级)。

window.size.ms

Type: long
Default: null
Importance: low

为反序列化izer 设置窗口大小,以计算窗口的结束时间。

windowed.inner.class.serde

Type: string
Default: null
Importance: low

窗口记录的内部类的默认序列化器/反序列化器。必须实施 org.apache.kafka.common.serialization.Serde 接口。请注意,在 KafkaStreams 应用程序中设置此配置会导致错误,因为它只用于来自 Plain consumer 客户端。

windowstore.changelog.additional.retention.ms

Type: long
Default: 86400000 (1 day)
Importance: low

添加到窗口维护M 中,以确保之前不会从日志中删除数据。允许时钟偏移。默认为 1 天。

附录 A. 使用您的订阅

AMQ Streams 通过软件订阅提供。要管理您的订阅,请访问红帽客户门户中的帐户。

访问您的帐户

  1. 转至 access.redhat.com
  2. 如果您还没有帐户,请创建一个帐户。
  3. 登录到您的帐户。

激活订阅

  1. 转至 access.redhat.com
  2. 导航到 My Subscriptions
  3. 导航到 激活订阅 并输入您的 16 位激活号。

下载 Zip 和 Tar 文件

要访问 zip 或 tar 文件,请使用客户门户网站查找下载的相关文件。如果您使用 RPM 软件包,则不需要这一步。

  1. 打开浏览器并登录红帽客户门户网站 产品下载页面,网址为 access.redhat.com/downloads
  2. INTEGRATION AND AUTOMATION 目录中找到 AMQ Streams for Apache Kafka 项。
  3. 选择所需的 AMQ Streams 产品。此时会打开 Software Downloads 页面。
  4. 单击组件的 Download 链接。

使用 DNF 安装软件包

要安装软件包以及所有软件包的依赖软件包,请使用:

dnf install <package_name>

要从本地目录中安装之前下载的软件包,请使用:

dnf install <path_to_download_package>

更新于 2023-05-19

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.