kafka中生产者客户端重要参数

本文深入解析Kafka生产者客户端的各项配置参数,包括broker地址列表、消息序列化、缓存大小、客户端ID、阻塞时间等关键设置,以及如何通过调整参数平衡消息可靠性和系统吞吐量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参数名称描述
bootstrap.serverskafka集群的broker地址列表
key.serializer消息key对应的序列化类
value.serializer消息value对应的序列化类
buffer.memory生产者客户端缓存消息的缓存大小,即RecordAccumulator的缓存大小
client.id上缠着客户端id
max.block.ms生产者客户端中send方法和partitionsFor方法的阻塞时间,当发送缓冲区已满,或者无可用的元数据时,就会发生阻塞
partitions.class指定分区器
enable.idempotence是否开启幂等性
interceptor.class指定生产者拦截器
metadata.max.age.ms如果元数据在这个时间内没有更新,强制更新元数据
transactional.id事务ID,必须唯一
acks表示服务端分区必须中必须有多少个副本都已经收到这条消息生产者才会认为这条消息已经写入成功。acks是生产者客户端一个非常重要的参数,涉及消息的可靠性和吞吐量之间的一个权衡。主要有如下三个取值: acks=1 默认值,此时只要leader副本写入成功,会立马给客户端响应,如果消息无法写入leader副本,比如leader选举,leader副本崩溃,客户端会受到一个错误的响应。如果写入leader副本成功,但是其他follower副本同步消息的时候leader副本崩溃,此时消息还是丢失,acks=1是可靠性和吞吐量的折中方案。 acks=0 表示生产者客户端发送消息后不需要登台任何服务端的响应。acks=0一般可以达到最大的吞吐量。 acks=-1或者acks=all 表示ISR中的所有副本都成功写入消息之后才会返回生产者客户端的成功响应。一般acks=-1能够达到最强的可靠性,但是并不代表消息一定可靠,如果ISR中只有leader副本,与acks=1的效果一样。增加min,insync,replicas配合
max.request.size生产者客户端能够发送消息的最大值,默认为1MB。一般不建议调整
retries生产者客户端发送失败时重试次数,默认为0,表示发送消息发生异常时不进行重试
retry.backoff.ms发送失败时,重试的间隔,默认值为100
max.in.flight.requests.per.connection客户端发送消息未收到响应的消息的最大缓存数。默认为5.Kafka能够实现在同一个分区中消息是有序的,如果 acks != 0max.in.flight.requests.per.connection>1,可能会出现乱序:第一批次消息写入失败,第二批次消息写入成功,生产者会重试发送第一批次的消息,此时如果第一批次消息重试发送成功,这两个批次消息就发生了乱序,一般而言如果需要保证顺序,建议将max.in.flight.requests.per.connection设置为1,而不是将acks设置为0
compression.type消息压缩的方式,默认为none,即不压缩消息,可以配置为:gzip,snappy,lz4。消息压缩能够减少网络传输、降低网络I/O,可以理解为时间换空间,如果对时延有要求,不建议使用
batch.size发送消息批次(ProducerBatch)的大小,默认为16KB。生产者客户端会把发送到同一个分区的消息放到同一个消息批次里面,batch.size表示的就是这个批次消息的大小,表示的是字节数而不是消息的个数
linger.ms生产者客户端发送消息(ProducerBatch)之前等待更多消息(ProducerRecord)加入的时间,默认值为0,即有消息立即发送.生产者客户端会再ProducerBatch被填满或等待时间超过linger.ms时发送出去
connections.max.idle.ms多久之后关闭空闲的连接,默认值为9分钟
receive.buffer.bytessocket接收消息缓冲区(SO_RECBUF)的大小,默认值为32KB,如果设置为-1,使用操作系统的默认值。如果生产者客户端与kafka服务端在不同机房,可以适当增大这个值
send.buffer.bytessocket发送消息缓冲区(SO_SENDBUF)的大小,默认为128KB
request.timeout.msProducer登台请求响应的最长时间,默认时间是5分钟。这个参数要比broker端参数replica.lag.time.max.ms`的值要大,避免客户端重试而引起的消息重复
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值