3.3 Producer Configs
目录
- 3.3 Producer Configs
- 原文链接
- 3.3 生产者配置
- key.serializer
- value.serializer
- bootstrap.servers
- buffer.memory
- compression.type
- retries
- ssl.key.password
- ssl.keystore.certificate.chain
- ssl.keystore.key
- ssl.keystore.location
- ssl.keystore.password
- ssl.truststore.certificates
- ssl.truststore.location
- ssl.truststore.password
- batch.size
- client.dns.lookup
- client.id
- connections.max.idle.ms
- delivery.timeout.ms
- linger.ms
- max.block.ms
- max.request.size
- partitioner.class
- receive.buffer.bytes
- request.timeout.ms
- sasl.client.callback.handler.class
- sasl.jaas.config
- sasl.kerberos.service.name
- sasl.login.callback.handler.class
- sasl.login.class
- sasl.mechanism
- sasl.oauthbearer.jwks.endpoint.url
- sasl.oauthbearer.token.endpoint.url
- security.protocol
- send.buffer.bytes
- socket.connection.setup.timeout.max.ms
- socket.connection.setup.timeout.ms
- ssl.enabled.protocols
- ssl.keystore.type
- ssl.protocol
- ssl.provider
- ssl.truststore.type
- acks
- enable.idempotence
- interceptor.classes
- max.in.flight.requests.per.connection
- metadata.max.age.ms
- metadata.max.idle.ms
- metric.reporters
- metrics.num.samples
- metrics.recording.level
- metrics.sample.window.ms
- reconnect.backoff.max.ms
- reconnect.backoff.ms
- retry.backoff.ms
- sasl.kerberos.kinit.cmd
- sasl.kerberos.min.time.before.relogin
- sasl.kerberos.ticket.renew.jitter
- sasl.kerberos.ticket.renew.window.factor
- sasl.login.connect.timeout.ms
- sasl.login.read.timeout.ms
- sasl.login.refresh.buffer.seconds
- sasl.login.refresh.min.period.seconds
- sasl.login.refresh.window.factor
- sasl.login.refresh.window.jitter
- sasl.login.retry.backoff.max.ms
- sasl.login.retry.backoff.ms
- sasl.oauthbearer.clock.skew.seconds
- sasl.oauthbearer.expected.audience
- sasl.oauthbearer.expected.issuer
- sasl.oauthbearer.jwks.endpoint.refresh.ms
- sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms
- sasl.oauthbearer.jwks.endpoint.retry.backoff.ms
- sasl.oauthbearer.scope.claim.name
- sasl.oauthbearer.sub.claim.name
- security.providers
- ssl.cipher.suites
- ssl.endpoint.identification.algorithm
- ssl.engine.factory.class
- ssl.keymanager.algorithm
- ssl.secure.random.implementation
- ssl.trustmanager.algorithm
- transaction.timeout.ms
- transactional.id
原文链接
3.3 生产者配置
以下是生产者相关的配置
key.serializer
实现 org.apache.kafka.common.serialization.Serializer
接口的 key 的序列化类
- Type: class
- Default:
- Valid Values:
- Importance: high
value.serializer
实现 org.apache.kafka.common.serialization.Serializer
接口的 value 的序列化类
- Type: class
- Default:
- Valid Values:
- Importance: high
bootstrap.servers
用于建立与Kafka群集的初始连接的 主机/端口 对列表。客户端将使用所有服务器,而不管此处指定了哪些服务器用于引导 —— 此列表仅影响用于发现完整服务器集的初始主机。此列表的格式应为 host1:port1,host2:port2,...
。由于这些服务器仅用于初始连接以发现完整的集群成员资格(可能会动态更改),因此此列表不需要包含完整的服务器集(但在服务器关闭的情况下,您可能需要多个服务器)。
- Type: list
- Default: “”
- Valid Values: non-null string
- Importance: high
buffer.memory
生产者可以用来缓冲等待发送到服务器的记录的总内存字节数。如果记录的发送速度超过了它们可以传送到服务器的速度,则生产者将阻塞 max.block.ms
之后,它将抛出异常。
此设置应大致对应于生产者将使用的总内存,但不是硬性要求,因为生产者使用的所有内存并非都用于缓冲。一些额外的内存将用于压缩(如果启用了压缩)以及维护飞行中的请求。
- Type: long
- Default: 33554432
- Valid Values:
[0,...]
- Importance: high
compression.type
生产者生成的所有数据的压缩类型。默认值为 none(即无压缩)。有效值为none
、gzip
、snappy
、lz4
或zstd
。压缩是整批数据,因此批处理的效果也会影响压缩比(更多的批处理意味着更好的压缩)。
- Type: string
- Default: none
- Valid Values:
- Importance: high
retries
设置大于零的值将导致客户端重新发送发送失败的任何记录,并可能出现暂时性错误。请注意,此重试与客户端在收到错误后重新发送记录的情况没有什么不同。如果 delivery.timeout.ms
配置的超时在成功确认之前先一步过期,则在重试次数用尽之前,生成请求将失败。ms在成功确认之前首先过期。用户通常应该不设置此配置,而是使用 delivery.timeout.ms
来控制重试行为。
启用幂等需要此配置值大于0。如果设置了冲突配置,且未显式启用幂等,则禁用幂等。
在将 enable.idempotence
设置为 false
和 max.in.flight.requests.per.connection
设置为 1
时允许重试可能会改变记录的顺序,因为如果将两个批发送到单个分区,第一个失败并重试,但第二个成功,则第二个批中的记录可能会先一步出现。
- Type: int
- Default: 2147483647
- Valid Values: [0,…,2147483647]
- Importance: high
ssl.key.password
密钥存储文件中私钥的密码或 ssl.keystore.key
中指定的 PEM 密钥。仅当配置了双向身份验证时,客户端才需要这样做。
- Type: password
- Default: null
- Valid Values:
- Importance: high
ssl.keystore.certificate.chain
证书链的格式由 ssl.keystore.type
指定。默认 SSL 引擎工厂仅支持 PEM 格式和 X.509
证书列表
- Type: password
- Default: null
- Valid Values:
- Importance: high
ssl.keystore.key
ssl.keystore.type
指定格式的私钥。默认SSL引擎工厂仅支持带有 PKCS#8
密钥的 PEM 格式。如果密钥已加密,则必须使用 ssl.key.password
指定密钥密码。
- Type: password
- Default: null
- Valid Values:
- Importance: high
ssl.keystore.location
密钥存储文件的位置。这对于客户端是可选的,可以用于客户端的双向身份验证。
- Type: string
- Default: null
- Valid Values:
- Importance: high
ssl.keystore.password
密钥存储文件的存储密码。这对于客户端是可选的,仅在 ssl.keystore.location
已配置时才需要。密钥存储密码不支持PEM格式。
- Type: password
- Default: null
- Valid Values:
- Importance: high
ssl.truststore.certificates
ssl.truststore.type
指定格式的受信任证书。默认 SSL引擎工厂 仅支持带有 X.509
证书的 PEM 格式。
- Type: password
- Default: null
- Valid Values:
- Importance: high
ssl.truststore.location
受信存储文件的位置。
- Type: string
- Default: null
- Valid Values:
- Importance: high
ssl.truststore.password
受信存储文件的密码。如果未设置密码,则仍将使用配置的信任存储文件,但禁用完整性检查。PEM 格式不支持信任存储密码。
- Type: password
- Default: null
- Valid Values:
- Importance: high
batch.size
每当将多个记录发送到同一分区时,生产者将尝试将记录批处理成更少的请求。这有助于提高客户端和服务器的性能。此配置以字节为单位控制默认批处理大小。
不会尝试批处理大于此大小的记录。
发送给代理的请求将包含多个批,每个分区一个批,可发送数据。
小批量将使批处理不太常见,并可能降低吞吐量(批量大小为零将完全禁用批处理)。非常大的批大小可能会更浪费内存,因为我们将始终分配指定批大小的缓冲区,以等待其他记录。
注意:此设置提供了要发送的批量大小的上限。如果我们为这个分区累积的字节少于这个数量,我们将“逗留”(linger) linger.ms
时间,等待更多记录出现。这个 linger.ms
默认为0,这意味着我们将立即发送一条记录,即使累积的批量大小低于此 batch.size
设置。
- Type: int
- Default: 16384
- Valid Values:
[0,...]
- Importance: medium
client.dns.lookup
控制客户端如何使用 DNS 查找。如果设置为 use_all_dns_ips
,则依次连接到每个返回的IP地址,直到建立成功连接。断开连接后,使用下一个IP。所有IP使用一次后,客户机将再次从主机名解析IP(不过,JVM和操作系统缓存 DNS 名称查找)。如果设置为resolve_canonical_bootstrap_servers_only
,请将每个引导地址解析为规范名称列表。在引导阶段之后,其行为与use_all_dns_ips
相同。
- Type: string
- Default: use_all_dns_ips
- Valid Values:
[use_all_dns_ips, resolve_canonical_bootstrap_servers_only]
- Importance: medium
client.id
发出请求时传递给服务器的id字符串。这样做的目的是通过允许在服务器端请求日志中包含逻辑应用程序名称,从而能够跟踪 ip/端口 以外的请求源。
- Type: string
- Default: “”
- Valid Values:
- Importance: medium
connections.max.idle.ms
在此配置指定的毫秒数后关闭空闲连接。
- Type: long
- Default: 540000 (9 minutes)
- Valid Values:
- Importance: medium
delivery.timeout.ms
调用 send()
返回后报告成功或失败的时间上限。这限制了记录在发送之前延迟的总时间、等待代理确认的时间(如果预期的话)以及可重试发送失败所允许的时间。如果遇到不可恢复的错误、重试次数已用尽,或者记录添加到已达到较早交付到期期限的批次中,则生产商可能会报告未能在此配置之前发送记录。此配置的值应大于或等于 request.timeout.ms
和 linger.ms
之和。
- Type: int
- Default: 120000 (2 minutes)
- Valid Values:
[0,...]
- Importance: medium
linger.ms
生产者将在请求传输之间到达的任何记录分组为单个批处理请求。通常情况下,只有在记录到达速度快于发送速度时,才会出现这种情况。然而,在某些情况下,即使在中等负载下,客户端也可能希望减少请求数量。此设置通过添加少量人工延迟来实现这一点,也就是说,生产者不会立即发送记录,而是等待给定的延迟,以允许发送其他记录,以便将发送的记录批处理在一起。这可以被认为类似于TCP中的Nagle算法。此设置给出了批处理延迟的上限:一旦我们为一个分区获得了 batch.size
值的记录,它将立即发送,而不管此设置如何。但是,如果我们为该分区累积的字节数少于此数,我们将“逗留”指定的时间,等待更多记录出现。此设置默认为0(即无延迟)。例如,设置BBB=5可以减少发送的请求数量,但在没有负载的情况下,发送的记录的延迟会增加到5毫秒。
- Type: long
- Default: 0
- Valid Values:
[0,...]
- Importance: medium
max.block.ms
配置控制 KafkaProducer
的 send()
、partitionsFor()
、initTransactions()
、sendOffsetsToTransaction()
、commitTransaction()
和abortTransaction()
。对于send()
,此超时限制了等待元数据获取和缓冲区分配的总时间(用户提供的序列化程序或分区程序中的阻塞不计入此超时)。对于partitionsFor()
,如果元数据不可用,则此超时限制等待元数据的时间。与事务相关的方法总是阻塞,但如果无法发现事务协调器或在超时时间内没有响应,则可能会超时。
- Type: long
- Default: 60000 (1 minute)
- Valid Values:
[0,...]
- Importance: medium
max.request.size
请求的最大大小(字节)。此设置将限制生产者在单个请求中发送的记录批数,以避免发送大量请求。这实际上也是最大未压缩记录批大小的上限。请注意,服务器对记录批大小有自己的上限(如果启用了压缩,则在压缩后),这可能与此不同。
partitioner.class
用于确定生成记录时要发送到哪个分区的类。可用选项包括:
org.apache.kafka.clients.producer.internals.DefaultPartitioner
:默认分区器。此策略将尝试坚持一个分区,直到批处理已满或linger.ms
已启动。它与以下策略配合使用:- 如果未指定分区,但存在键,请根据键的哈希值选择分区
- 如果不存在分区或键,请选择在批处理已满或
linger.ms
启动时更改的粘性分区
org.apache.kafka.clients.producer.RoundRobinPartitioner
:这种分区策略是,一系列连续记录中的每个记录将被发送到不同的分区(无论是否提供了“键”),直到我们用完分区并重新开始。注意:创建新批时,存在一个已知问题,该问题将导致分布不均匀。请查看 KAFKA-9965 了解更多详细信息。org.apache.kafka.clients.producer.UniformStickyPartitioner
:此分区策略将尝试坚持一个分区(无论是否提供了“键”),直到批处理已满或linger.ms
已启动。
实现 org.apache.kafka.clients.producer.Partitioner
接口允许您插入自定义分区器。
- Type: class
- Default: org.apache.kafka.clients.producer.internals.DefaultPartitioner
- Valid Values:
- Importance: medium
receive.buffer.bytes
读取数据时使用的 TCP 接收缓冲区(SO_RCVBUF
)的大小。如果值为 -1 ,将使用操作系统默认值。
- Type: int
- Default: 32768 (32 kibibytes)
- Valid Values:
[-1,...]
- Importance: medium
request.timeout.ms
配置控制客户端等待请求响应的最长时间。如果在超时时间过去之前未收到响应,则客户端将在必要时重新发送请求,或者在重试失败时使请求失败。这应该大于 replica.lag.time.max.ms
(代理配置),以减少由于不必要的生产者重试而导致消息重复的可能性。
- Type: int
- Default: 30000 (30 seconds)
- Valid Values:
[0,...]
- Importance: medium
sasl.client.callback.handler.class
实现 AuthenticateCallbackHandler
接口的 SASL 客户端回调处理程序类的完全限定名。
- Type: class
- Default: null
- Valid Values:
- Importance: medium
sasl.jaas.config
JAAS 配置文件使用的格式的 SASL 连接的JAAS登录上下文参数。这里描述了JAAS配置文件格式。该值的格式为:loginModuleClass controlFlag (optionName=optionValue)*;
。对于代理,配置必须以侦听器前缀和SASL机制名称(小写)作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=com.example.ScramLoginModule required;
- Type: password
- Default: null
- Valid Values:
- Importance: medium
sasl.kerberos.service.name
Kafka 运行的 Kerberos 主体名称。这可以在卡夫卡的 JAAS 配置或卡夫卡配置中定义。
- Type: string
- Default: null
- Valid Values:
- Importance: medium
sasl.login.callback.handler.class
实现 AuthenticateCallbackHandler
接口的 SASL 登录回调处理程序类的完全限定名。对于代理,登录回调处理程序配置必须以侦听器前缀和SASL机制名称(小写)作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.callback.handler.class=com.example.CustomScramLoginCallbackHandler
- Type: class
- Default: null
- Valid Values:
- Importance: medium
sasl.login.class
实现登录接口的类的完全限定名。对于代理,登录配置必须以侦听器前缀和SASL机制名称(小写)作为前缀。例如,listener.name.sasl_ssl.scram-sha-256.sasl.login.class=com.example.CustomScramLogin
- Type: class
- Default: null
- Valid Values:
- Importance: medium
sasl.mechanism
用于客户端连接的 SASL 机制。这可以是安全提供者可用的任何机制。GSSAPI 是默认机制。
- Type: string
- Default: GSSAPI
- Valid Values:
- Importance: medium
sasl.oauthbearer.jwks.endpoint.url
OAuth/OIDC提供程序URL,可从中检索提供程序的JWKS(JSON Web密钥集)。URL可以是基于HTTP或基于文件的。如果URL是基于HTTP的,那么在代理启动时,将通过配置的URL从OAuth/OIDC提供程序检索JWKS数据。所有当前密钥都将缓存在代理上,用于传入请求。如果接收到针对JWT的身份验证请求,其中包含尚未在缓存中的“kid”头声明值,则将根据需要再次查询JWKS端点。但是,代理每隔 sasl.oauthbearer.jwks.endpoint.refresh.ms
毫秒轮询一次URL,以便在接收到任何包含密钥的JWT请求之前使用任何即将到来的密钥刷新缓存。如果URL是基于文件的,代理将在启动时从配置的位置加载JWKS文件。如果JWT包含不在JWKS文件中的“kid”头值,代理将拒绝JWT,身份验证将失败。
- Type: string
- Default: null
- Valid Values:
- Importance: medium
sasl.oauthbearer.token.endpoint.url
OAuth/OIDC标识提供程序的URL。如果URL是基于HTTP的,则它是发卡机构的令牌端点URL,将根据 sasl.jaas.config
中的配置向其发出登录请求。如果URL是基于文件的,则它指定一个文件,该文件包含OAuth/OIDC身份提供程序发布的用于授权的访问令牌(JWT序列化形式)。
- Type: string
- Default: null
- Valid Values:
- Importance: medium
security.protocol
用于与代理通信的协议。有效值为: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL。
- Type: string
- Default: PLAINTEXT
- Valid Values:
- Importance: medium
send.buffer.bytes
发送数据时要使用的TCP发送缓冲区(SO_SNDBUF)的大小。如果值为-1,将使用操作系统默认值。
- Type: int
- Default: 131072 (128 kibibytes)
- Valid Values:
[-1,...]
- Importance: medium
socket.connection.setup.timeout.max.ms
客户端等待套接字连接建立的最长时间。对于每个连续连接失败,连接设置超时将以指数方式增加,直到达到该最大值。为了避免连接风暴,将对超时应用 0.2 的随机化因子,导致计算值低于 20% 和高于 20% 之间的随机范围。
- Type: long
- Default: 30000 (30 seconds)
- Valid Values:
- Importance: medium
socket.connection.setup.timeout.ms
客户端将等待套接字连接建立的时间量。如果在超时过去之前未建立连接,客户端将关闭套接字通道。
- Type: long
- Default: 10000 (10 seconds)
- Valid Values:
- Importance: medium
ssl.enabled.protocols
为 SSL 连接启用的协议列表。使用 Java 11 或更高版本运行时,默认值为“TLSv1.2,TLSv1.3
”,否则为“TLSv1.2
”。使用 Java 11 的默认值,如果客户端和服务器都支持 TLSv1.3
,则客户端和服务器将首选 TLSv1.3
,否则将返回到 TLSv1.2
(假设两者至少支持 TLSV 1.2
)。在大多数情况下,此默认值应该可以。另请参阅 “ssl.protocol” 的配置文档。
- Type: list
- Default: TLSv1.2
- Valid Values:
- Importance: medium
ssl.keystore.type
密钥存储文件的文件格式。这对于客户端是可选的。
- Type: string
- Default: JKS
- Valid Values:
- Importance: medium
ssl.protocol
用于生成 SSLContext 的 SSL 协议。使用 Java 11 或更高版本运行时,默认值为 “TLSv1.3
”,否则为 “TLSv1.2
”。对于大多数用例,该值应该是合适的。最近的 JVM 中允许的值是“TLSv1.2
”和“TLSv1.3
”。旧 JVM 可能支持 “TLS
”、 “TLSv1.1
”、 “SSL
”、 “SSLv2
” 和 “SSLv3
” ,但由于已知的安全漏洞,不鼓励使用它们。使用此配置和ssl.enabled.protocols
配置的默认值,如果服务器不支持“TLSv1.3
”,则客户端将降级为“TLSv1.2
”。如果此配置设置为“TLSv1.2
”,则客户端将不会使用“TLSv1.3
”,即使它是 ssl.enabled.protocols
中的值之一且服务器仅支持“TLSv1.3
”。
- Type: string
- Default: TLSv1.2
- Valid Values:
- Importance: medium
ssl.provider
用于 SSL 连接的安全提供程序的名称。默认值是 JVM 的默认安全提供程序。
- Type: string
- Default: null
- Valid Values:
- Importance: medium
ssl.truststore.type
信任存储文件的文件格式。
- Type: string
- Default: JKS
- Valid Values:
- Importance: medium
acks
生产者要求领导者在考虑请求完成之前收到的确认数。这控制发送的记录的耐久性。允许以下设置:
acks=0
如果设置为零,则生产者根本不会等待来自服务器的任何确认。记录将立即添加到套接字缓冲区并被视为已发送。在这种情况下,无法保证服务器已接收到记录,并且retries
配置不会生效(因为客户端通常不会知道任何故障)。每个记录返回的偏移量将始终设置为-1
。acks=1
这意味着领导者会将记录写入其本地日志,但不会等待所有追随者的完全确认。在这种情况下,如果领导者在确认记录后但在追随者复制之前立即失败,则记录将丢失。acks=all
这意味着领导者将等待完整的同步副本集确认记录。这保证了只要至少有一个同步副本保持活动,记录就不会丢失。这是最有力的保证。这相当于acks=-1
设置。
请注意,启用幂等需要此配置值为 “all
”。如果设置了冲突配置且未显式启用幂等性,则禁用幂等性。
- Type: string
- Default: all
- Valid Values:
[all, -1, 0, 1]
- Importance: low
enable.idempotence
当设置为 true
时,生产者将确保每个消息的一个副本写入流中。如果为 false
,则由于代理失败等原因导致的生产者重试可能会在流中写入重试消息的副本。请注意,启用幂等性要求 max.in.flight.requests.per.connection
小于或等于 5
(对于任何允许的值保留消息排序), retries
大于 0
, acks
必须为 all
。
如果未设置冲突配置,则默认启用幂等性。如果设置了冲突配置且未显式启用幂等性,则禁用幂等性。如果显式启用了幂等性并设置了冲突配置,则会引发 ConfigException
。
- Type: boolean
- Default: true
- Valid Values:
- Importance: low
interceptor.classes
用作拦截器的类列表。实现 org.apache.kafka.clients.producer.ProducerInterceptor
接口允许您在将生产者接收的记录发布到 Kafka 集群之前拦截(并可能变异)这些记录。默认情况下,没有拦截器。
- Type: list
- Default: “”
- Valid Values: non-null string
- Importance: low
max.in.flight.requests.per.connection
在阻塞之前,客户端将在单个连接上发送的未确认请求的最大数量。请注意,如果此配置设置为大于1,并且 enable.idempotence
设置为 false,则在发送失败后,由于重试(即,如果启用重试),存在重新排序消息的风险。此外,启用幂等性要求此配置值小于或等于 5
。如果设置了冲突配置且未显式启用幂等,则禁用幂等性。
- Type: int
- Default: 5
- Valid Values:
[1,...]
- Importance: low
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
用作度量报告器的类列表。实现 org.apache.kafka.common.metrics.MetricsReporter
接口允许插入将被通知创建新度量的类。始终包含 JmxReporter
以注册 JMX 统计信息。
- Type: list
- Default: “”
- Valid Values:
non-null string
- Importance: low
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
重新连接到重复连接失败的代理时等待的最大时间(以毫秒为单位)。如果提供,每台主机的回退将在每次连续连接失败时呈指数增长,直至达到最大值。计算退避增加后,添加 20% 的随机抖动以避免连接风暴。
- Type: long
- Default: 1000 (1 second)
- Valid Values:
[0,...]
- Importance: low
reconnect.backoff.ms
尝试重新连接到给定主机之前等待的基本时间。这避免了在紧密循环中重复连接到主机。此回退适用于客户端到代理的所有连接尝试。
- Type: long
- Default: 50
- Valid Values:
[0,...]
- Importance: low
retry.backoff.ms
尝试重试对给定主题分区的失败请求之前等待的时间。这避免了在某些故障情况下在紧密循环中重复发送请求。
- Type: long
- Default: 100
- Valid Values:
[0,...]
- Importance: low
sasl.kerberos.kinit.cmd
Kerberos kinit 命令路径。
- Type: string
- Default: /usr/bin/kinit
- Valid Values:
- Importance: low
sasl.kerberos.min.time.before.relogin
刷新尝试之间的登录线程睡眠时间。
- Type: long
- Default: 60000
- Valid Values:
- Importance: low
sasl.kerberos.ticket.renew.jitter
添加到更新时间的随机抖动百分比。
- Type: double
- Default: 0.05
- Valid Values:
- Importance: low
sasl.kerberos.ticket.renew.window.factor
登录线程将休眠,直到达到从上次刷新到票证到期的指定时间窗口因子,此时它将尝试续订票证。
- Type: double
- Default: 0.8
- Valid Values:
- Importance: low
sasl.login.connect.timeout.ms
外部身份验证提供程序连接超时的(可选)毫秒值。目前仅适用于 OAUTHBEARER。
- Type: int
- Default: null
- Valid Values:
- Importance: low
sasl.login.read.timeout.ms
外部身份验证提供程序读取超时的(可选)毫秒值。目前仅适用于 OAUTHBEARER。
- Type: int
- Default: null
- Valid Values:
- Importance: low
sasl.login.refresh.buffer.seconds
刷新凭据时要保持的凭据过期前的缓冲时间量,以秒为单位。如果刷新将在比缓冲秒数更接近到期时发生,则刷新将向上移动以尽可能多地保持缓冲时间。法定值介于0和3600(1小时)之间;如果未指定值,则使用默认值300(5分钟)。如果该值和 sasl.login.refresh.min.period.seconds
的总和超过凭证的剩余生存期,则忽略它们。目前仅适用于 OAUTHBEARER。
- Type: short
- Default: 300
- Valid Values:
[0,...,3600]
- Importance: low
sasl.login.refresh.min.period.seconds
登录刷新线程在刷新凭据之前所需的最短等待时间(秒)。法定值介于0和900(15分钟)之间;如果未指定值,则使用默认值60(1分钟)。如果该值和 sasl.login.refresh.buffer.seconds
的总和超过凭证的剩余生存期,则忽略它们。目前仅适用于 OAUTHBEARER。
- Type: short
- Default: 60
- Valid Values:
[0,...,900]
- Importance: low
sasl.login.refresh.window.factor
登录刷新线程将休眠,直到达到与凭据的生存期相关的指定窗口因子,此时它将尝试刷新凭据。法定值介于0.5(50%)和1.0(100%)之间;如果未指定值,则使用默认值0.8(80%)。目前仅适用于 OAUTHBEARER。
- Type: double
- Default: 0.8
- Valid Values:
[0.5,...,1.0]
- Importance: low
sasl.login.refresh.window.jitter
添加到登录刷新线程的睡眠时间中的相对于凭据生存期的最大随机抖动量。法定值介于0和0.25(含25%)之间;如果未指定值,则使用默认值0.05(5%)。目前仅适用于 OAUTHBEARER。
- Type: double
- Default: 0.05
- Valid Values:
[0.0,...,0.25]
- Importance: low
sasl.login.retry.backoff.max.ms
尝试登录到外部身份验证提供程序之间的最大等待时间(可选)值,以毫秒为单位。登录使用基于 sasl.login.retry.backoff.ms
设置的初始等待的指数退避算法,在两次尝试之间的等待长度将加倍,直到 sasl.login.retry.backoff.max.ms
设置指定的最大等待长度。目前仅适用于 OAUTHBEARER。
- Type: long
- Default: 10000 (10 seconds)
- Valid Values:
- Importance: low
sasl.login.retry.backoff.ms
尝试登录到外部身份验证提供程序之间的初始等待(可选)毫秒值。登录使用基于 sasl.login.retry.backoff.ms
设置的具有初始等待的指数退避算法,并且在两次尝试之间的等待长度将加倍,直到 sasl.login.retry.backoff.max.ms
设置指定的最大等待长度。目前仅适用于 OAUTHBEARER。
- Type: long
- Default: 100
- Valid Values:
- Importance: low
sasl.oauthbearer.clock.skew.seconds
允许 OAuth/OIDC 身份提供程序和代理之间的时间差异的(可选)秒值。
- Type: int
- Default: 30
- Valid Values:
- Importance: low
sasl.oauthbearer.expected.audience
代理使用的(可选)逗号分隔设置,用于验证 JWT 是为预期受众之一发布的。将检查 JWT 的标准 OAuth “aud” 声明,如果设置了该值,经纪人将匹配 JWT “aud” 声明中的值,以查看是否存在精确匹配。如果没有匹配,代理将拒绝 JWT,身份验证将失败。
- Type: list
- Default: null
- Valid Values:
- Importance: low
sasl.oauthbearer.expected.issuer
代理用于验证JWT是否由预期发行人创建的(可选)设置。将检查JWT的标准OAuth “iss” 声明,如果设置了该值,则经纪人将其与JWT “iss” 声明中的内容完全匹配。如果没有匹配,代理将拒绝JWT,身份验证将失败。
- Type: string
- Default: null
- Valid Values:
- Importance: low
sasl.oauthbearer.jwks.endpoint.refresh.ms
代理在刷新其包含用于验证JWT签名的密钥的JWKS(JSON Web密钥集)缓存之间等待的(可选)毫秒值。
- Type: long
- Default: 3600000 (1 hour)
- Valid Values:
- Importance: low
sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms
从外部身份验证提供程序检索JWKS(JSON Web密钥集)的尝试之间的最大等待时间(可选),以毫秒为单位。JWKS检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms
设置的具有初始等待的指数退避算法,并且在两次尝试之间的等待长度将加倍,直到 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms
设置指定的最大等待长度。
- Type: long
- Default: 10000 (10 seconds)
- Valid Values:
- Importance: low
sasl.oauthbearer.jwks.endpoint.retry.backoff.ms
来自外部身份验证提供程序的JWK(JSON Web密钥集)检索尝试之间的初始等待(可选)毫秒值。JWKS检索使用基于 sasl.oauthbearer.jwks.endpoint.retry.backoff.ms
设置的具有初始等待的指数退避算法,并且在两次尝试之间的等待长度将加倍,直到 sasl.oauthbearer.jwks.endpoint.retry.backoff.max.ms
设置指定的最大等待长度。
- Type: long
- Default: 100
- Valid Values:
- Importance: low
sasl.oauthbearer.scope.claim.name
作用域的 OAuth 声明通常命名为 “scope”,但如果 OAuth/OIDC 提供程序为该声明使用不同的名称,则此(可选)设置可以为 JWT 有效负载声明中包含的作用域提供不同的名称。
- Type: string
- Default: scope
- Valid Values:
- Importance: low
sasl.oauthbearer.sub.claim.name
主题的 OAuth 声明通常被命名为 “sub”,但如果 OAuth/OIDC 提供程序为该声明使用不同的名称,则此(可选)设置可以为 JWT 有效负载声明中包含的主题提供不同的名称。
- Type: string
- Default: sub
- Valid Values:
- Importance: low
security.providers
可配置创建者类的列表,每个类返回实现安全算法的提供者。这些类应该实现 org.apache.kafka.common.security.auth.SecurityProviderCreator
接口。
- Type: string
- Default: null
- Valid Values:
- Importance: low
ssl.cipher.suites
密码套件列表。这是身份验证、加密、MAC和密钥交换算法的命名组合,用于协商使用TLS或SSL网络协议的网络连接的安全设置。默认情况下,支持所有可用的密码套件。
- Type: list
- Default: null
- Valid Values:
- Importance: low
ssl.endpoint.identification.algorithm
使用服务器证书验证服务器主机名的端点标识算法。
- Type: string
- Default: https
- Valid Values:
- Importance: low
ssl.engine.factory.class
org.apache.kafka.common.security.auth.SslEngineFactory
类型的类提供 SSLEngine 对象。默认值为org.apache.kafka.common.security.ssl.DefaultSslEngineFactory
。
- Type: class
- Default: null
- Valid Values:
- Importance: low
ssl.keymanager.algorithm
密钥管理器工厂用于SSL连接的算法。默认值是为 Java 虚拟机配置的密钥管理器工厂算法。
- Type: string
- Default: SunX509
- Valid Values:
- Importance: low
ssl.secure.random.implementation
用于SSL加密操作的 SecureRandom PRNG 实现。
- Type: string
- Default: null
- Valid Values:
- Importance: low
ssl.trustmanager.algorithm
信任管理器工厂用于SSL连接的算法。默认值是为 Java 虚拟机配置的信任管理器工厂算法。
- Type: string
- Default: PKIX
- Valid Values:
- Importance: low
transaction.timeout.ms
在主动中止正在进行的事务之前,事务协调器将等待生产者的事务状态更新的最长时间(毫秒)。如果此值大于代理中的 transaction.max.timeout.ms
设置,则请求将失败,并出现InvalidTxnTimeoutException
错误。
- Type: int
- Default: 60000 (1 minute)
- Valid Values:
- Importance: low
transactional.id
用于事务传递的 TransactionalId。这支持跨多个生产者会话的可靠性语义,因为它允许客户机保证在启动任何新事务之前已完成使用相同事务ID的事务。如果未提供 TransactionalId,则生产者仅限于幂等传递。如果配置了事务ID,则必然包含 enable.idempotence
。默认情况下,未配置 TransactionId,这意味着无法使用事务。请注意,默认情况下,事务需要至少三个代理的集群,这是推荐的生产设置;对于开发,您可以通过调整代理设置 transaction.state.log.replication.factor
来更改此设置。
- Type: string
- Default: null
- Valid Values: non-empty string
- Importance: low