Kafka 配置属性


Red Hat AMQ Streams 2.5

使用配置属性配置 Kafka 组件

摘要

获取 Kafka 组件如何使用 Kafka 配置属性运行。

使开源包含更多

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

第 1 章 代理配置属性

advertised.listeners

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

与监听程序配置属性不同,用来发布 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 进行配置。如果领导 imbalance 超过 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 和用户配置的代理 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')。它还接受"未压缩",相当于没有压缩;而 "producer' 则保留由制作者设置的原始压缩 codec。

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

开始新选举前的最长时间(毫秒)。这用于二进制指数避退机制,以帮助防止网格锁定选举机制。

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 前的最大时间,而无需从大多数仲裁获得获取。

controller.quorum.voters

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

在以逗号分隔的 {id}@{host}:{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

启用删除主题。如果这个配置已关闭,则通过 admin 工具删除主题将无效。

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 以绑定到所有接口。将主机名留空以绑定到默认接口。法律监听程序列表示例: 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

日志清除程序检查是否需要刷新到磁盘的频率,以 ms 为单位。

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

process.roles 非空时,与此过程的角色关联的节点 ID。这是以 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 绑定,乘以集群中代理的数量。把这个值增加后续 CPU 和内存使用率成本的 I/O 并行性。

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

在将偏移加载到缓存中时从偏移片段读取的批处理大小(如果记录太大,则覆盖软限制)。

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

偏移主题的压缩 codec - 压缩可用于实现"原子"提交。

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 和事务加载到缓存中时,从事务日志片段读取批处理大小(如果记录太大,则覆盖软限制)。

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

将客户端设置为使用安全 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.5-IV2
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, 1.1-IV0, 1.1-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-iv0, 2.3-iv1, 2.4-iv0, 2.4-iv1, 2.5-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-iv0, 3.0-iv1, 3.1-IV0, 3.2-IV0, 3.3-IV0, 3.3-IV1, 3.3-IV2, 3.3-IV3, 3.4-IV0, 3.5-IV0, 3.5-IV1, 3.5-IV2]
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

用于在所有干净线程中日志重复数据删除的总内存。

log.cleaner.delete.retention.ms

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

为日志压缩主题保留 delete tombstone 标记的时间长度。此设置还绑定消费者在偏移 0 开始时消费者必须完成读取,以确保它们获得最终阶段的有效快照(在完成扫描前可能会收集其他地删除 tombstones)。

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.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 配置,则日志紧凑器会认为满足脏比率阈值,并且日志至少具有日志.cleaner.min.compaction.compaction.compaction.compaction.lag.ms 持续时间的日志。 或者(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

保留窗口之外的片段的默认清理策略。以逗号分隔的有效策略列表。有效策略为:"删除"和"紧凑"。

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-IV1
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, 1.1-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-iv0, 2.3-iv1, 2.4-iv0, 2.4-iv1, 2.5-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-iv0, 3.0-iv1, 3.1-IV0, 3.2-IV0, 3.3-IV0, 3.3-IV1, 3.3-IV2, 3.3-IV3, 3.4-IV0, 3.5-IV0, 3.5-IV1, 3.5-IV2]
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 侦听程序的连接。

max.connections

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

在代理中允许的最大连接数。除了使用 max.connections.per.ip 配置的 per-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

以逗号分隔的每个ip 或主机名列表会覆盖默认连接数。示例值为 "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

生成者请求的清除间隔(以请求数为单位)。

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

尝试为每个分区获取的消息字节数。如果获取的第一个非空分区中的第一个非空分区中的第一个记录批处理大于这个值,则记录批处理仍会返回,以确保进行进度。代理接受的最大记录批处理大小通过 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

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

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

实施登录接口的类的完全限定名称。对于代理,登录配置必须在小写中带有监听前缀和 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 密钥集) 的 OAuth/OIDC 供应商 URL。URL 可以是基于 HTTP (S),也可以是基于文件的。如果 URL 是基于 HTTP (S),则 JWKS 数据将通过代理启动时配置的 URL 从 OAuth/OIDC 供应商检索。所有 then-current 密钥都将缓存在代理上,以获取传入请求。如果为包含尚未在缓存中的"kid"标头声明值的 JWT 收到身份验证请求,则 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。在实践中,SCRAM、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
  • 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.3',否则为 '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 连接的密钥管理器工厂使用的算法。默认值为为 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 引擎工厂只支持使用 PKCS1148 密钥的 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.3',否则为 'TLSv1.2'。对于大多数用例,这个值应该是正常的。最近的 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 连接的算法。默认值为为 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

在将 TLS 连接到 ZooKeeper 时,通常设置为 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 系统属性设置的任何值(注意不同的名称)。如果没有设置且未设置 zookeeper.clientCnxnSocket 时(通常为 org.apache.zookeeper.ClientCnxnSocket.ClientCnxnSocketNetty );要设置的其他值可能包括 zookeeper.ssl.cipher.suiteszookeeper.ssl.crl.enablezookeeper.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)设置的任何显式值。请注意,Zookeep 不支持与密钥存储密码不同的密钥密码,因此请确保将密钥存储中的密钥密码设置为与密钥存储密码相同;否则,尝试 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

应该用于验证的更改配置策略类。类应实施 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> 配额。对于任何给定请求,最具体的配额与会话的用户主体匹配,并且应用请求的 client-id。

connection.failed.authentication.delay.ms

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

在身份验证失败时连接关闭延迟:这是在身份验证失败时关闭连接的时间(以毫秒为单位)。这必须配置为小于 connections.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 主题策略类。类应实施 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 操作,自定义报告器还需要实施扩展 kafka.metrics.KafkaMetricsReporterMBean 特征的 MBean 特征,以便注册的 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

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

sasl.login.retry.backoff.ms

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

(可选)在登录尝试外部身份验证提供程序之间初始等待的值(毫秒)。登录使用基于 sasl.login.retry.backoff.ms 设置的初始等待的指数 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 密钥集)缓存之间等待的值,该缓存包含密钥以验证 JWT 的签名。

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

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

(可选)值(以毫秒为单位),在尝试从外部身份验证提供程序检索 JWKS (JSON Web 密钥集)之间等待的最大值。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待长度的指数 backoff 算法,并在尝试最多等待由 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 密钥集)从外部身份验证提供程序检索尝试。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待长度的指数 backoff 算法,并在尝试最多等待由 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",但如果 OAuth/OIDC 供应商使用了其他声明的名称,则此设置可以提供不同的名称,用于 JWT 有效负载声明中包含的范围。

sasl.oauthbearer.sub.claim.name

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

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

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

类型 org.apache.kafka.common.security.auth.SslEngineFactory 的类,以提供 SSLEngine 对象。默认值为 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.hostname 验证 系统属性设置的任何 "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 章 主题配置属性

第 3 章 消费者配置属性

key.deserializer

type: class
Importance: high

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

value.deserializer

type: class
Importance: high

用于实现 org.apache.kafka.common.serialization.Deserializer 接口的值的反序列化类。

bootstrap.servers

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

用于建立到 Kafka 集群的初始连接的主机/端口对列表。客户端将使用此处为 bootstrap 指定哪些服务器的所有服务器 - 此列表仅影响用于发现完整服务器的初始主机。此列表的格式应为 host1:port1,host2:port2,…​。由于这些服务器仅用于发现完整的集群成员资格(可能会动态更改),因此此列表不需要包含完整的服务器集合(但是,在服务器停机时可能需要多个服务器)。

fetch.min.bytes

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

服务器为获取请求返回的最小数据量。如果数据不足,请求将在回答请求前等待该数量的数据累积。1 字节的默认设置表示,当数据有很多字节或获取请求超时等待数据到达时,就会对获取请求进行回答。把它设置为较大的值将导致服务器等待大量数据积累,这可以提高服务器吞吐量(以一些额外的延迟为代价)。

group.id

Type: string
Default: null
Importance: high

标识此消费者所属的消费者组的唯一字符串。如果消费者使用 subscribe (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 引擎工厂只支持使用 PKCS1148 密钥的 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 和操作系统缓存 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)的消息,这是第一个打开事务的偏移数小。特别是在属于持续事务的消息后出现的任何消息都会被忘记,直到相关事务完成为止。因此,当有 flight 事务时,read_committed 使用者将无法读取高水位线。

 Further, when in `read_committed` the seekToEnd method will return the LSO
.
Copy to Clipboard Toggle word wrap
max.poll.interval.ms

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

使用消费者组管理时调用 poll ()的最大延迟。这会在获取更多记录前,在消费者闲置的时间上放置上限。如果在超时过期前没有调用 poll (),则消费者被视为失败,组将重新平衡,以便将分区重新分配给另一个成员。对于使用达到这个超时的非空 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 : Guarantee 分配一个最大平衡的分配,同时尽可能保留尽可能多的分区分配。
  • org.apache.kafka.clients.consumer.CcoordinationStickyAssignor: 遵循相同的 StickyAssignor 逻辑,但允许合作重新平衡。

    默认分配者为 [RangeAssignor, CcoordinationStickyAssignor],它将默认使用 RangeAssignor,但允许使用 RangeAssignor,但只允许使用一个带有单一滚动 bounce 的 CcolStickyAssignor,它将从列表中删除 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

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

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

实施登录接口的类的完全限定名称。对于代理,登录配置必须在小写中带有监听前缀和 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 密钥集) 的 OAuth/OIDC 供应商 URL。URL 可以是基于 HTTP (S),也可以是基于文件的。如果 URL 是基于 HTTP (S),则 JWKS 数据将通过代理启动时配置的 URL 从 OAuth/OIDC 供应商检索。所有 then-current 密钥都将缓存在代理上,以获取传入请求。如果为包含尚未在缓存中的"kid"标头声明值的 JWT 收到身份验证请求,则 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.3',否则为 '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.3',否则为 'TLSv1.2'。对于大多数用例,这个值应该是正常的。最近的 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 以避免连接停滞。

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

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

sasl.login.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)在登录尝试外部身份验证提供程序之间初始等待的值(毫秒)。登录使用基于 sasl.login.retry.backoff.ms 设置的初始等待的指数 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 密钥集)缓存之间等待的值,该缓存包含密钥以验证 JWT 的签名。

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

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

(可选)值(以毫秒为单位),在尝试从外部身份验证提供程序检索 JWKS (JSON Web 密钥集)之间等待的最大值。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待长度的指数 backoff 算法,并在尝试最多等待由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置之间的等待长度之间加倍。

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

Type: long
Default: 100
Importance: low

(可选)值(以毫秒为单位),用于 JWKS (JSON Web 密钥集)从外部身份验证提供程序检索尝试。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待长度的指数 backoff 算法,并在尝试最多等待由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置之间的等待长度之间加倍。

sasl.oauthbearer.scope.claim.name

type: string
Default: scope
Importance: low

范围的 OAuth 声明通常命名为"scope",但如果 OAuth/OIDC 供应商使用了其他声明的名称,则此设置可以提供不同的名称,用于 JWT 有效负载声明中包含的范围。

sasl.oauthbearer.sub.claim.name

type: string
Default: sub
Importance: low

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

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

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

ssl.keymanager.algorithm

type: string
Default: SunX509
Importance: low

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

ssl.secure.random.implementation

Type: string
Default: null
Importance: low

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

ssl.trustmanager.algorithm

type: string
Default: PKIX
Importance: low

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

第 4 章 生成者配置属性

key.serializer

type: class
Importance: high

实现 org.apache.kafka.common.serialization.Serializer 接口的密钥的序列化类。

value.serializer

type: class
Importance: high

用于实现 org.apache.kafka.common.serialization.Serializer 接口的值的序列化类。

bootstrap.servers

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

用于建立到 Kafka 集群的初始连接的主机/端口对列表。客户端将使用此处为 bootstrap 指定哪些服务器的所有服务器 - 此列表仅影响用于发现完整服务器的初始主机。此列表的格式应为 host1:port1,host2:port2,…​。由于这些服务器仅用于发现完整的集群成员资格(可能会动态更改),因此此列表不需要包含完整的服务器集合(但是,在服务器停机时可能需要多个服务器)。

buffer.memory

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

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

此设置应当与制作者将使用的总内存对应,但不是硬绑定,因为不是生成者使用的所有内存进行缓冲。一些额外的内存将用于压缩(如果启用了压缩),以及维护动态请求。

compression.type

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

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

retries

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

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

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

在将 enable.idempotence 设置为 falsemax.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 引擎工厂只支持使用 PKCS1148 密钥的 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 和操作系统缓存 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 算法类似。此设置在批处理延迟上提供了上限:一旦为分区获取 batch.size,无论此设置如何,都会立即发送它。但是,如果我们对这个分区的总字节少于这个分区,我们将"闲置"等待更多记录显示。此设置默认为 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

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

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

实施登录接口的类的完全限定名称。对于代理,登录配置必须在小写中带有监听前缀和 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 密钥集) 的 OAuth/OIDC 供应商 URL。URL 可以是基于 HTTP (S),也可以是基于文件的。如果 URL 是基于 HTTP (S),则 JWKS 数据将通过代理启动时配置的 URL 从 OAuth/OIDC 供应商检索。所有 then-current 密钥都将缓存在代理上,以获取传入请求。如果为包含尚未在缓存中的"kid"标头声明值的 JWT 收到身份验证请求,则 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.3',否则为 '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.3',否则为 'TLSv1.2'。对于大多数用例,这个值应该是正常的。最近的 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,则排序会被保留。另外,启用 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 以避免连接停滞。

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

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

sasl.login.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)在登录尝试外部身份验证提供程序之间初始等待的值(毫秒)。登录使用基于 sasl.login.retry.backoff.ms 设置的初始等待的指数 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 密钥集)缓存之间等待的值,该缓存包含密钥以验证 JWT 的签名。

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

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

(可选)值(以毫秒为单位),在尝试从外部身份验证提供程序检索 JWKS (JSON Web 密钥集)之间等待的最大值。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待长度的指数 backoff 算法,并在尝试最多等待由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置之间的等待长度之间加倍。

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

Type: long
Default: 100
Importance: low

(可选)值(以毫秒为单位),用于 JWKS (JSON Web 密钥集)从外部身份验证提供程序检索尝试。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待长度的指数 backoff 算法,并在尝试最多等待由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置之间的等待长度之间加倍。

sasl.oauthbearer.scope.claim.name

type: string
Default: scope
Importance: low

范围的 OAuth 声明通常命名为"scope",但如果 OAuth/OIDC 供应商使用了其他声明的名称,则此设置可以提供不同的名称,用于 JWT 有效负载声明中包含的范围。

sasl.oauthbearer.sub.claim.name

type: string
Default: sub
Importance: low

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

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

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

ssl.keymanager.algorithm

type: string
Default: SunX509
Importance: low

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

ssl.secure.random.implementation

Type: string
Default: null
Importance: low

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

ssl.trustmanager.algorithm

type: string
Default: PKIX
Importance: low

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

transaction.timeout.ms

Type: int
Default: 60000 (1 分钟)
Importance: low

事务在协调者主动中止前保持打开的最大时间(以毫秒为单位)。事务的开头会在向其中添加第一个分区时设置。如果这个值大于代理中的 transaction.max.timeout.ms 设置,则请求将失败,并显示 InvalidTxnTimeoutException 错误。

transactional.id

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

用于事务交付的 TransactionalId。这可让跨越多个制作者会话的可靠性语义,因为它允许客户端保证在启动任何新事务前,使用相同的 TransactionalId 的事务已经完成。如果没有提供 TransactionalId,则生成者仅限于幂等交付。如果配置了 TransactionalId,则启用.idempotence。默认情况下,TransactionId 没有被配置,这意味着无法使用事务。请注意,默认情况下,事务需要至少三个代理的集群,这是生产环境的建议设置;对于开发,您可以通过调整代理设置 transaction.state.log.replication.factor 来更改此设置。

第 5 章 管理客户端配置属性

bootstrap.servers

type: list
Importance: high

用于建立到 Kafka 集群的初始连接的主机/端口对列表。客户端将使用此处为 bootstrap 指定哪些服务器的所有服务器 - 此列表仅影响用于发现完整服务器的初始主机。此列表的格式应为 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 引擎工厂只支持使用 PKCS1148 密钥的 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 和操作系统缓存 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

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

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

实施登录接口的类的完全限定名称。对于代理,登录配置必须在小写中带有监听前缀和 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 密钥集) 的 OAuth/OIDC 供应商 URL。URL 可以是基于 HTTP (S),也可以是基于文件的。如果 URL 是基于 HTTP (S),则 JWKS 数据将通过代理启动时配置的 URL 从 OAuth/OIDC 供应商检索。所有 then-current 密钥都将缓存在代理上,以获取传入请求。如果为包含尚未在缓存中的"kid"标头声明值的 JWT 收到身份验证请求,则 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.3',否则为 '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.3',否则为 'TLSv1.2'。对于大多数用例,这个值应该是正常的。最近的 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 以避免连接停滞。

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

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

sasl.login.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)在登录尝试外部身份验证提供程序之间初始等待的值(毫秒)。登录使用基于 sasl.login.retry.backoff.ms 设置的初始等待的指数 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 密钥集)缓存之间等待的值,该缓存包含密钥以验证 JWT 的签名。

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

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

(可选)值(以毫秒为单位),在尝试从外部身份验证提供程序检索 JWKS (JSON Web 密钥集)之间等待的最大值。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待长度的指数 backoff 算法,并在尝试最多等待由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置之间的等待长度之间加倍。

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

Type: long
Default: 100
Importance: low

(可选)值(以毫秒为单位),用于 JWKS (JSON Web 密钥集)从外部身份验证提供程序检索尝试。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待长度的指数 backoff 算法,并在尝试最多等待由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置之间的等待长度之间加倍。

sasl.oauthbearer.scope.claim.name

type: string
Default: scope
Importance: low

范围的 OAuth 声明通常命名为"scope",但如果 OAuth/OIDC 供应商使用了其他声明的名称,则此设置可以提供不同的名称,用于 JWT 有效负载声明中包含的范围。

sasl.oauthbearer.sub.claim.name

type: string
Default: sub
Importance: low

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

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

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

ssl.keymanager.algorithm

type: string
Default: SunX509
Importance: low

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

ssl.secure.random.implementation

Type: string
Default: null
Importance: low

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

ssl.trustmanager.algorithm

type: string
Default: PKIX
Importance: low

信任管理器工厂用于 SSL 连接的算法。默认值为为 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 集群的初始连接的主机/端口对列表。客户端将使用此处为 bootstrap 指定哪些服务器的所有服务器 - 此列表仅影响用于发现完整服务器的初始主机。此列表的格式应为 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 的组管理功能时,心跳到组协调器的预期时间。心跳用于确保 worker 的会话保持活跃状态,并在新成员加入或离开组时便于重新平衡。该值必须小于 session.timeout.ms,但设置的值通常不应超过这个值的 1/3。可以调整它,以控制正常重新平衡的预期时间。

rebalance.timeout.ms

Type: int
Default: 60000 (1 minute)
Importance: high

在重新平衡 begun 后,每个 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 引擎工厂只支持使用 PKCS1148 密钥的 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 和操作系统缓存 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: [-1,…​]
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

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

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

实施登录接口的类的完全限定名称。对于代理,登录配置必须在小写中带有监听前缀和 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 密钥集) 的 OAuth/OIDC 供应商 URL。URL 可以是基于 HTTP (S),也可以是基于文件的。如果 URL 是基于 HTTP (S),则 JWKS 数据将通过代理启动时配置的 URL 从 OAuth/OIDC 供应商检索。所有 then-current 密钥都将缓存在代理上,以获取传入请求。如果为包含尚未在缓存中的"kid"标头声明值的 JWT 收到身份验证请求,则 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 默认。

ssl.enabled.protocols

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

为 SSL 连接启用的协议列表。当使用 Java 11 或更新版本运行时,默认为 'TLSv1.2,TLSv1.3',否则为 '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.3',否则为 'TLSv1.2'。对于大多数用例,这个值应该是正常的。最近的 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 同步且需要重新同步配置时,请在放弃、离开组以及重新加入前等待这个时间。

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

将 Access-Control-Allow-Origin 标头设置为 REST API 请求的值设为。要启用跨源访问,将其设置为允许访问 API 的应用域,或 'DSL' 允许从任何域访问。默认值仅允许从 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 类名称,按照指定顺序加载和使用。通过实施接口 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 Connect 协议的兼容性模式。

header.converter

type: class
Default: org.apache.kafka.connect.storage.SimpleHeaderConverter
Importance: low

HeaderConverter 类用于在 Kafka Connect 格式和写入 Kafka 的序列化表单之间进行转换。这控制了从 Kafka 写入或读取消息中的标头值格式,因为这独立于连接器,因此它可以允许任何连接器使用任何序列化格式。常见格式示例包括 JSON 和 Avro。默认情况下,simpleHeaderConverter 用于将标头值序列化为字符串,并通过推断架构来反序列化它们。

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 以绑定到所有接口。将主机名留空以绑定到默认接口。法律监听程序列表示例: 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

包含插件(connectors、转换器、转换)分隔的路径列表。该列表应由顶层目录组成,其中包括:一个目录(带有插件及其依赖项 b)带有插件及其依赖项 c 目录的 uber-jars 会立即包含类软件包目录结构及其依赖项:符号链接将遵循发现依赖项或插件。示例: plugin.path=/usr/local/share/java,/usr/local/share/kafka/plugins,/opt/connectors Do 不使用此属性中的配置供应商变量,因为 worker 的扫描程序在配置提供程序被初始化并用于替换变量之前使用原始路径。

reconnect.backoff.max.ms

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

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

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,您可以注入连接的 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

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

sasl.login.retry.backoff.ms

Type: long
Default: 100
Importance: low

(可选)在登录尝试外部身份验证提供程序之间初始等待的值(毫秒)。登录使用基于 sasl.login.retry.backoff.ms 设置的初始等待的指数 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 密钥集)缓存之间等待的值,该缓存包含密钥以验证 JWT 的签名。

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

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

(可选)值(以毫秒为单位),在尝试从外部身份验证提供程序检索 JWKS (JSON Web 密钥集)之间等待的最大值。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待长度的指数 backoff 算法,并在尝试最多等待由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置之间的等待长度之间加倍。

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

Type: long
Default: 100
Importance: low

(可选)值(以毫秒为单位),用于 JWKS (JSON Web 密钥集)从外部身份验证提供程序检索尝试。JWKS 检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms 设置的初始等待长度的指数 backoff 算法,并在尝试最多等待由 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms 设置之间的等待长度之间加倍。

sasl.oauthbearer.scope.claim.name

type: string
Default: scope
Importance: low

范围的 OAuth 声明通常命名为"scope",但如果 OAuth/OIDC 供应商使用了其他声明的名称,则此设置可以提供不同的名称,用于 JWT 有效负载声明中包含的范围。

sasl.oauthbearer.sub.claim.name

type: string
Default: sub
Importance: low

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

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
  • 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

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

ssl.keymanager.algorithm

type: string
Default: SunX509
Importance: low

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

ssl.secure.random.implementation

Type: string
Default: null
Importance: low

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

ssl.trustmanager.algorithm

type: string
Default: PKIX
Importance: low

信任管理器工厂用于 SSL 连接的算法。默认值为为 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)用于成员资格管理(3)的 group-id 主题前缀。

bootstrap.servers

type: list
Importance: high

用于建立到 Kafka 集群的初始连接的主机/端口对列表。客户端将使用此处为 bootstrap 指定哪些服务器的所有服务器 - 此列表仅影响用于发现完整服务器的初始主机。此列表的格式应为 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

要捕获客户端的最大可接受滞后(要捕获的偏移数)以想被耗尽,以接收活动任务分配。分配后,它仍然会在处理前恢复更改的其余部分。为了避免在重新平衡过程中暂停处理,此配置应该在给定工作负载的一分钟下与恢复时间相对应的恢复时间。必须至少为 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

用于实现 org.apache.kafka.common.serialization.Serde 接口的密钥的默认序列化器 / deserializer 类。请注意,当使用窗口的 serde 类时,需要一个设置 inner serde 类,该类也通过 'default.windowed.key.serde.inner' 或 'default.windowed.value.serde.inner' 实现 org.apache.kafka.common.serialization.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 s.ListSerde 时,才会读取此配置,当使用 list serde 类时,您需要设置 inner serde 类,该类通过 'default.list.key.serde.inner' 实现 org.apache.kafka.common.serialization.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

默认序列化器 / deserializer 类用于实现 org.apache.kafka.common.serialization.Serde 接口的值。请注意,当使用窗口的 serde 类时,需要一个设置 inner serde 类,该类也通过 'default.windowed.key.serde.inner' 或 'default.windowed.value.serde.inner' 实现 org.apache.kafka.common.serialization.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

最多温副本数(超过配置的 num.standbys 之外的额外待机),这些副本数可以一次性分配,以便在一个实例上保持任务,同时它在其他实例上被重新分配。用于节流可用于高可用性的额外代理流量和集群状态。必须至少为 1.Note,一个 warmup 副本对应于一个流任务。另外,请注意,每个温副本只能在重新平衡期间提升到活跃任务(通常在所谓的探测重新平衡过程中,这会在 probing.rebalance.interval.ms 配置指定的频率时发生)。这意味着,活跃任务可以从一个 Kafka Streams 实例迁移到另一个实例的最大速率由(max.warmup.replicas / probing.rebalance.interval.ms)决定。

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 将最好地将待机任务分发到每个客户端标签维度上。

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@6ed3ef1
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

提交处理进度的频率(毫秒)。对于 at-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.client.supplier

Type: class
Default: org.apache.kafka.streams.processor.internals.DefaultKafkaClientSupplier
Importance: low

实现 org.apache.kafka.streams.KafkaClientSupplier 接口的客户端供应商类。

default.dsl.store

type: string
Default: rocksDB
Valid Values: [rocksDB, in_memory]
Importance: low

DSL operator 使用的默认状态存储类型。

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

在触发重新平衡前等待的最长时间(毫秒)以探测到已完成温并准备好激活的温副本。探测重新平衡将继续触发,直到分配平衡为止。必须至少为 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 以避免连接停滞。

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

实现 org.apache.kafka.streams.state.RocksDBConfigSetter 接口的 Rocks DB config setter 类或类名称。

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

Type: 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, 3.4]
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", "3.4", "3.4"

window.size.ms

Type: long
Default: null
Importance: low

为反序列化器设置窗口大小,以计算窗口结束时间。

windowed.inner.class.serde

Type: string
Default: null
Importance: low

默认序列化器 / deserializer 用于窗口记录的内部类。必须实施 org.apache.kafka.common.serialization.Serde 接口。请注意,在 KafkaStreams 应用程序中设置此配置会导致错误,因为它只从 Plain consumer 客户端使用。

windowstore.changelog.additional.retention.ms

Type: long
Default: 86400000 (1 day)
Importance: low

添加到窗口 MaintenanceMs 中,以确保不会预先从日志中删除数据。允许时钟偏移。默认为 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>
Copy to Clipboard Toggle word wrap

要从本地目录中安装之前下载的软件包,请使用:

dnf install <path_to_download_package>
Copy to Clipboard Toggle word wrap

更新于 2023-11-22

法律通告

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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat