kafka producer关键参数配置

Kafka Producer发送端-配置鸟瞰图

kafka 发送消息调用的send方法底层其实是将消息放入了缓冲区,然后是一个单独的线程负责从缓冲区将消息按topic&paritition纬度打包成批次消息,再发送到服务端broker。并在发生可恢复的异常时负责重试。最后用异步Future返回结果。

所以这个流程里有很多配置控制细节。下面是一个鸟瞰图,直观感受有些什么参数参与。

Kafka Producer发送端-配置鸟瞰图

核心参数作用

enable.idempotence

默认:true。

消息幂等。保证单个producer发送的消息到单个topic单个partition的消息是幂等的。

当设置为true的时候,如下配置:

max.in.flight.requests.per.connection  必须小于等于5.

retries  大于0

aks  必须设置为 all 。
如果配置冲突,会抛出ConfigException。

max.in.flight.requests.per.connection
 

默认:5

单个producer可以在未收到broker回复前继续发送的批次数量。5即代表着一个producer可以同时发送5批次的消息给broker端。如果是1,相当于此producer只能顺序一批批的发送消息给broker端。前一批发送的消息broker响应之后,才能发送下一批。

max.block.ms

默认:1分钟

调用这些方法时,最大阻塞等待时间。

send()

partitionsFor()

initTransactions()

sendOffsetsToTransaction()

commitTransaction()

abortTransaction()
阻塞等待主要是因为要获取元数据,或者底层的发送消息的buffer不够大,塞满了。

delivery.timeout.ms

默认:120000 (2分钟)

从调用send,到future真正返回的最大等待时间。

buffer.memory

默认:33554432(32M)

一个producer最多可以用来缓存消息的缓存大小。

如果发送缓慢(比如linger.ms很大,batch.size很小)

就会导致调用send等方法卡住,知道达到(max.block.ms)配置的时间后抛出异常。

linger.ms

默认:0(不延时)

延时等待batch填满的时间,默认0,不等待。

producer的底层是将send方法送来的消息缓存在buffer中,分批次发送。假设很久一段时间内只有一条数据,没有达到规定的一个批次的量。那么要等多久才发送这条消息呢?这个配置就是用来设置这个的。假设设置为了5s。那么最多延时5s,就算不到一个批次的大小也会发送此数据。

batch.size

默认:16384(即16Kb)

producer底层一批次发送消息的最大值。

可以设置为0,那么此时就相当于一次只发送一条消息,将极大的限制流量。

acks

默认:all

acks=0,proudcer把消息写到socket缓冲区就算发送成功了,不会等待server端响应。

acks=1,proudcer发送消息给leader,leader将收到的消息写到本地log就会响应给producer,不等待同步给follower,算成功。

acks=all,producer发送消息给leader,消息必须在leader和follower全部同步完成,leader才会响应producer发送成功。

request.timeout.ms

默认:30000 (30s)

producer等待broker返回结果的最大时长。

超时会根据配置触发重试或者返回异常。
此值应该大于broker端的配置replica.lag.time.max.ms。

避免broker进行leader&follower同步的时长大于客户端等待时长,造成producer的错误判断。

max.request.size

默认:1048576(1M)

单次请求最大值。

retries

默认:2147483647

高版本次数很大,意思就是默认遇见可恢复的异常无限重试直到达到delivery.timeout.ms阈值。

retry.backoff.max.ms

默认:1000(即1s)

重试的最大间隔,如果retry.backoff.ms设置的比retry.backoff.max.ms还大,那么每次重试的间隔永远恒定用retry.backoff.max.ms。

retry.backoff.ms

默认:100

重试的初始间隔。随着重试次数增加而指数级增加,直到达到retry.backoff.max.ms。

官网

Kafka producer configuration reference | Confluent Documentation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值