1.acks
决定分区中有多少副本收到这条消息,生产者才会认为这条消息成功写入
有三种类型的值(String):
- acks=1,默认值,只要leader写入成功即返回成功响应(折中方案)
- acks=0,不需要等待服务端响应,可以达到最大吞吐量(其他配置相同条件下)
- acks=-1或all,等待ISR中所有副本成功写入消息才能返回成功响应,可靠性最高
2.max.request.size
单条消息的最大值,默认值为1048576B,即1MB,会涉及到其他参数
3.retries和retry.backoff.ms
retries配置生产者重试次数,默认值为0
retry.backoff.ms默认值为100,设定两次重试之间的时间间隔,避免无效的频繁重试
4.compression.type
指定消息压缩方式,默认值为"none",还可以配置"gzip"、"snappy"和"lz4",使用时间换空间的方式,如果对时延有一定要求,不推荐对消息进行压缩
5.connections.max.idel.ms
空连接超时限制
6.linger.ms
指定生产者发送ProducerBatch之前等待ProducerRecord加入ProducerBatch的时间,默认为0,增大该参数会增加消息延迟,但是能提升一定的吞吐量
7.receive.buffer.bytes
设置socket接收消息缓冲区的大小,默认值为32768B,即32KB,如果设置为-1,使用操作系统的默认值
8.send.buffer.bytes
设置socket发送消息缓冲区的大小,默认值为131072B,即128KB,如果设置为-1,使用操作系统的默认值
9.request.timeout.ms
设置Producer等待请求响应的最长时间,默认值为30000(ms)
该参数需要比broker端参数replica.lag.time.max.ms的值大,可以减少因客户端重试而引起的消息重复的概率