本文介绍客户端参数的配置规则,请根据实际业务场景配置适当的值。
客户端参数列表及说明如下所示:
参数 | 说明 |
---|---|
retries | 消息发送失败时的重试次数。 |
retry.backoff.ms | 消息发送失败时的重试间隔,建议设置为1000。单位:毫秒。 |
acks | 发送消息的持久化机制。为了提升发送性能, 建议设置为acks=1 。
|
batch.size | 发往每个分区的消息缓存量。达到设置的数值时,就会触发一次网络请求,然后Producer客户端把消息批量发往服务器。如果batch.size设置过小,有可能影响发送性能和稳定性。建议保持默认值16384。单位:字节。 |
linger.ms | 每条消息在缓存中的最长时间。若超过这个时间,Producer客户端就会忽略batch.size的限制,立即把消息发往服务器。建议根据业务场景, 将linger.ms设置在100~1000之间。单位:毫秒。 |
partitioner.class | 设置分区策略。建议采用粘性分区策略,可提升发送性能。发送客户端2.4及以上版本,默认采用粘性分区策略模式。 |
buffer.memory | 发送的内存池大小。如果内存池设置过小,则有可能导致申请内存耗时过长,从而影响发送性能,甚至导致发送超时。建议buffer.memory ≧ batch.size * 分区数 * 2 。单位:字节。 |
参数 | 说明 |
---|---|
fetch.min.bytes | 消费者从服务端获取数据的最小字节数。设置该参数时请尽量评估消息发送端的消息量,若设置过大可能会导致消费端延迟增大,过小可能会导致消费端频繁拉取消息。单位:字节。 |
fetch.max.wait.ms | 服务端等待的最大时间。单位:毫秒。
|
max.partion.fetch.bytes | 每个分区返回的最大字节数。单位:字节。 |
session.timeout.ms | 消费端发送心跳的时间间隔,如果在心跳时间间隔内没有发送心跳,则服务端会认为消费者死亡,从而触发Rebalance,Rebalance期间客户端将会停止消费数据等待Rebalance完成。建议将此参数设置为30000~60000。单位:毫秒。 默认有效值:6000~300000。 |
max.poll.records | 每次Poll获取的最大消息数量,若此值设置过大则需要尽快处理业务逻辑,避免处理过慢影响下一次Poll数据,从而导致在session.timeout.ms时间内没有发送心跳引起Rebalance。建议该值小于 重要 在Java Client 0.10.1及其以上版本有单独的线程发送心跳,小于此版本或者其他语言的客户端都需考虑处理数据时间和发送心跳的间隔,防止频繁Rebalance影响正常消费。 |
max.poll.interval.ms | 最大的Poll间隔时间,仅在Java Client 0.10.1及其以上版本需配置该参数。如果在间隔时间内消费者没有发送Poll请求,即使在session.timeout.ms参数设置的时间内发送了心跳。服务端也会认为消费者死亡,从而触发Rebalance。因此需注意此值需要合理设置,建议该值大于<消费一条消息花费的时间> * <Poll拉取的数据条数> 的值。通常使用默认值即可。单位:毫秒。默认值:300000。 |
enable.auto.commit | 是否采用自动提交位点机制。
默认值:true。 |
auto.commit.interval.ms | 自动提交位点时间间隔。默认值为1000,单位:毫秒。 |
auto.offset.reset | 消费位点重置策略。
说明
|