参数名称 | 描述 |
---|---|
bootstrap.servers | kafka集群的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 != 0 且max.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.bytes | socket接收消息缓冲区(SO_RECBUF)的大小,默认值为32KB,如果设置为-1,使用操作系统的默认值。如果生产者客户端与kafka服务端在不同机房,可以适当增大这个值 |
send.buffer.bytes | socket发送消息缓冲区(SO_SENDBUF)的大小,默认为128KB |
request.timeout.ms | Producer登台请求响应的最长时间,默认时间是5分钟。这个参数要比broker端参数 replica.lag.time.max.ms`的值要大,避免客户端重试而引起的消息重复 |
kafka中生产者客户端重要参数
最新推荐文章于 2025-03-30 18:05:10 发布