kafka生产者实例配置参数

KafkaProducer中有三个参数是必填的:

bootstrap.servers: 指定生产者客户端连接kafka集群所需的broker地址列表,格式为host1:port1,host2:port2,可以设置一个或多个。这里并非需要所有的broker地址,因为生产者会从给定的broker里寻找其它的broker。

key.serializer和value.serializer:broker接收消息必须以字节数组byte[]形式存在,KafkaProducer<K,V>和ProducerRecord<K,V>中的泛型就是key和value的类型。key.serializer和value.serializer分别用来指定key和value序列化操作的序列化器,无默认值。类的全限定名。

非必填参数

client.id:这个参数用来设定kafkaProducer对应的客户端id,默认值为“”,如果不设置,会自动生成一个非空字符串,内容形式如:“producer-1”,“producer-2”…

retries:配置生产者重试次数,对于可重试异常,那么只要在规定的次数内自行恢复了,就不会抛出异常,默认是0。

retry.backoff.ms用来设定两次重试之间的时间间隔,默认值100。

partitioner.class:显示配置使用哪个分区器。

interceptor.classes:指定自定义拦截器,多个传List集合。

buffer.memory:生产者客户端RecordAccumulator缓存大小,默认值为33554432B,即32M。

batch.size:ProducerBatch可以复用内存区域的大小

max.block.ms:最大阻塞时间,RecordAccumulator缓存不足时或者没有可用的元数据时,KafkaProducer的send()方法调用要么被阻塞,要么抛出异常,此参数的默认值为60000,即60s。

metadata.max.age.ms:当客户端超过这个时间间隔时就会更新元数据信息默认值300000,即5分钟。元数据指集群中有哪些主题,主题有哪些分区,每个分区leader副本在哪个节点上,follower副本在哪个节点上,哪些副本在AR,ISR等集合中,集群中有哪些节点等等。

acks:用来指定必须要多少个副本收到这条消息,之后生产者才会认为这条消息成功写入。acks是生产者客户端中一个非常重要的参数,它涉及消息的可靠性和吞吐量之间的权衡。acks参数有三种类型的值:字符串类型,不是整型。

​ 1:只要分区的leader副本写入成功,生产者就会收到来自服务端的成功响应。如果再被其它follower副本拉取前leader副本崩溃,那么此时消息还是会丢失。

​ 0:生产者发送消息之后不需要等待任何服务端的响应。如果在消息发送到写入kafka的过程中出现了某些异常,导致kafka并没有收到这条消息,那么生产者也无从得知,消息会丢失。

​ -1或者all:生产者发送消息之后,需要等待ISR中所有副本成功写入消息之后才能收到来自服务端的成功响应。

max.request.size:用来限制生产者客户端能发送的消息的最大值,默认值为1048576B,即1MB。这个参数涉及到其它参数的联动,比如broker端的message.max.bytes参数。对kafka没有足够把控的时候不要更改此参数。

compression.type:指定消息的压缩方式,默认值为"none",可以配置为"gzip",“snappy”和“lz4”。

connections.max.idle.ms:用来指定多久之后关闭闲置的连接,默认值540000(ms),即9min

linger.ms:生产者发送ProducerBatch之前等待更多消息(ProducerRecoder)加入ProducerBatch的时间,默认值为0。生产者客户端会在ProducerBatch被填满或者等待时间超过linger.ms时发送出去。增大这个参数的值会增加消息的延迟,但同时会提高吞吐量。

receive.buffer.bytes:用来设置socket接收缓冲区的大小,默认值为32768(B),即32KB,如果设置为-1,则使用操作系统的默认值。

send.buffer.bytes:用来设置socket发送缓冲区的大小,默认值为131072(B),即128KB,如果设置为-1,则使用操作系统默认值。

request.timeout.ms:配置Producer等待请求响应的最长时间,默认值为30000(ms),请求超时之后可以进行重试。注意这个参数需要比broker端参数replica.lag.time.max.ms的值要大,这样可以减少因客户端重试而引起的消息重复的概率。

enable.idempotence:是否开启幂等性功能,默认值false

max.in.flight.requests.per.connection:限制每个连接,也就是客户端与Node之间的连接最多缓存请求数,默认值5

transactional.id:设置事物id,必须唯一,默认值null

实时内容请关注微信公众号,公众号与博客同时更新:程序员星星
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章