bootstrap.servers
kafka集群 broker 地址
key.serializer
key 对应序列化类
value.serializer
value 序列化类
acks
指定分区中有多少副本收到这个消息之后生产者才任务消息成功写入。
- acks=1
默认值 1,生产者发送消息之后,只要分区 leader 副本成功写入就认为成功。
存在问题:如果 leader 副本写入成功就认为成功,在这个过程中 leader 崩溃,而没有来得及同步给 follower副本,重新选举之后,消息就会丢失。 - acks=0
生产者发送消息之后就不需要等待任何服务端的响应。 - acks=-1或者 acks=all
生产者发送消息之后,等待 isr中所有副本都成功写入消息之后收到服务端响应,客户端才认为写入成功。
如果 isr 中只有 leader 副本,那就退化成 acks=1.
三者相比,acks=0可以达到最大吞吐量,acks=-1可以达到最大可靠性,acks=1是消息可靠性和吞吐量的一种折中方案。
max.request.size
限制生产者客户端发送消息的最大值
默认值 1MB
retries
生产者重试次数。默认 0
retry.backoff.ms
设置时间重试间隔。默认值 100
compression.type
指定压缩方式。
默认 none,无压缩。可配置 gzip、snappy、lz4。
消息压缩可以减少网络传输量、降低网络 io,从而提高整体性能。
消息压缩以时间换空间的优化方式吗,对时延有一定要求,不推荐开启压缩。
connections.max.idle.ms
关闭闲置链接时间间隔,默认 9 分钟
linger.ms
生产者发送 ProducerBactch之前等待消息时间。
默认值0。
receive.buffer.bytes
scoket接受消息缓存区大小,默认 32KB
send.buffer.bytes
socket发送消息缓存区的大小。默认值 128KB
request.timeout.ms
生产者请求响应最长时间。默认 3000ms.
请求超时之后可以选择重试。