kafka 生产者__重要参数
[可以参考官网资料][http://kafka.apache.org/documentation.html#producerconfigs]
-
1、acks:
这个参数中是用来指定分区中必须要有多少个副本收到这条消息,之后生产者猜会认为这条消息是成功写入的。acks是生产者客户端的一个非常重要的参数。它涉及到消息的可靠性和吞吐量之间的权衡。
ack=1:默认值为1.只要leader副本成功写入数据,那么它就会收到服务端的成功响应。是消息可靠性和吞吐量的一个这种方案。
ack=0:只要消息发送后,不等待服务端的任何响应。在其他配置相同的情况下可以达到最大的吞吐量。
ack=-1:等待所有的ISR副本都成功写入数据后,才返回成功响应。只要ISR中的副本数量大于1个,就一定能保证消息不会丢失。具有最大的可可靠性。配置min.insync.replicas大于1,将能保证消息不会丢失。
-
2、max.request.size
这个参数的用来限制生产者客户端能够发送的消息最大值。默认值为:1048576B,即1M。
-
3、retires和retry.backoff.ms
retires参数是用来配置生产者重试的次数,默认值为0。即不进行重试,即在发送消息的时候不进行任何的重试动作。消息从生产者写入到broker的时候可能会发生一些临时性的异常,比如网络抖动,leader副本选举等,这种异常往往是可以自行恢复的。
-
4、compression.type
用来指定消息压缩的类型,默认值为:NONE。该参数还可以配置为gzip、snappy、lz4、zstd.
-
5、connections.max.idle.ms
用来配置多长时间后关闭空闲连接。默认值为:540000ms,即9分钟。
-
6、linger.ms
这个参数用来指定生产者发送ProducerBatch之前等待更多的消息加入的时间,默认值为0。增大这个参数的值,能提升一定的吞吐量,但会增加消息的延迟
-
7、receive.buffer.bytes
这个参数用来设定Socket接收消息缓冲区的大小,默认值为32768,即32KB。如果设置为-1,则使用操作系统的默认值。如果producer与kafka处于不同的机房,则可以适当的增大这个参数的值。
-
8、send.buffer.bytes
这个参数用来设置Socket发送消息的缓冲区大小,默认值为131072即128K。与receive.buffer.bytes参数一样,如果设置为-1,则使用操作系统的默认值。
-
9、request.timeout.ms
这个参数用来配置Producer等待响应的最长时间。默认值为30000ms。请求超时之后可以选择进行重试,注意这个参数需要比broker端的参数:replica.lag.time.max.ms的值要大,这个可以减少因客户端重试而引起的消息重复的概率。