第 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 (例如没有压缩)。有效值为
none
、gzip
、snappy
、lz4
或zstd
。压缩是完整的数据批处理,因此批处理效率也会影响压缩率(更多批处理意味着更好的压缩率)。retries
type: int
Default: 2147483647
Valid Values: [0,…,2147483647]
Importance: high
设置大于零的值将导致客户端重新发送发送失败的任何记录,并显示潜在的临时错误。请注意,这个重试与客户端在收到错误时重新处理记录不同。如果在通过
delivery.timeout.ms
配置超时前,在重试次数之前,生成请求将失败,然后再成功确认前过期。用户通常应想设置此配置,而是使用delivery.timeout.ms
来控制重试的行为。启用 idempotence 需要此配置值大于 0。如果设置了冲突配置,且没有显式启用 idempotence,则禁用 idempotence。
在将
enable.idempotence
设置为false
和max.in.flight.requests.per.connection
时进行重试可能会更改大于 1 的记录顺序,因为如果两个批处理发送到单个分区,第一次失败,然后重试,但第二个批处理中的记录可能会显示第一个。ssl.key.password
Type: password
Default: null
Importance: high
密钥存储文件或 'ssl.keystore.key' 中指定的 PEM 密钥中的私钥密码。
ssl.keystore.certificate.chain
Type: password
Default: null
Importance: high
使用由 'ssl.keystore.type" 指定的格式的证书链。默认 SSL 引擎工厂仅支持使用 X.509 证书列表的 PEM 格式。
ssl.keystore.key
Type: password
Default: null
Importance: high
使用 'ssl.keystore.type" 指定的格式的私钥。默认 SSL 引擎工厂只支持使用 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.ms
和linger.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()
andabortTransaction()
方法将被阻塞多长时间。对于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
来更改此设置。