spring-kafka_配置参数

参考:

配置application.yml

(一般项目自动生成的是applicaiton.properties,但为了书写简便,改成yml)

spring:
   kafka:
     bootstrap-servers: 10.3.13.213:9092,10.3.13.197:9092,10.3.13.194:9092
     producer:
       key-serializer: org.apache.kafka.common.serialization.StringSerializer
       value-serializer: org.apache.kafka.common.serialization.StringSerializer
     consumer:
       group-id: test
       enable-auto-commit: true
       key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
       value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
View Code

生产者配置属性

重要配置
bootstrap.servers  
用于建立与kafka集群建立连接的地址集合,书写格式为:ip1:port,ip2:port2,ip3:port3     类型是list
spring.kafka.producer.bootstrap-servers=TopKafka1:9092,TopKafka2:9092,TopKafka3:9092

 spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
Key的序列化方式,用于实现Serializer接口    类型是class

spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer
值的Serializer类,实现了org.apache.kafka.common.serialization.Serializer接口

spring.kafka.producer.retries=0
设置大于0的值将使客户端重新发送任何数据,一旦这些数据发送失败。注意,这些重试与客户端接收到发送错误时的重试没有什么不同。
允许重试将潜在的改变数据的顺序,如果这两个消息记录都是发送到同一个partition,
则第一个消息失败第二个发送成功,则第二条消息会比第一条消息出现要早。

spring.kafka.producer.batch-size=16384
每当多个记录被发送到同一分区时,生产者将尝试将记录一起批量处理为更少的请求,
这有助于提升客户端和服务端之间的性能,此配置控制默认批量大小(以字节为单位),默认值为16384

spring.kafka.producer.buffer-memory=33554432
producer可以用来缓存数据的内存大小。如果数据产生速度大于向broker发送的速度,producer会阻塞或者抛出异常,以“block.on.buffer.full”来表明。
这项设置将和producer能够使用的总内存相关,但并不是一个硬性的限制,因为不是producer使用的所有内存都是用于缓存。
一些额外的内存会用于压缩(如果引入压缩机制),同样还有一些用于维护请求。

spring.kafka.producer.acks=-1
procedure要求leader在考虑完成请求之前收到的确认数,用于控制发送记录在服务端的持久化,其值可以为如下:
acks = 0 如果设置为零,则生产者将不会等待来自服务器的任何确认,该记录将立即添加到套接字缓冲区并视为已发送。
在这种情况下,无法保证服务器已收到记录,并且重试配置将不会生效(因为客户端通常不会知道任何故障),
为每条记录返回的偏移量始终设置为-1。

acks = 1 这意味着leader会将记录写入其本地日志,但无需等待所有副本服务器的完全确认即可做出回应,
在这种情况下,如果leader在确认记录后立即失败,但在将数据复制到所有的副本服务器之前,则记录将会丢失。
 
acks = all 这意味着leader将等待完整的同步副本集以确认记录,这保证了只要至少一个同步副本服务器仍然存活,
记录就不会丢失,这是最强有力的保证,这相当于acks = -1的设置。

可以设置的值为:all, -1, 0, 1

 

消费者配置属性

重要配置属性
spring.kafka.consumer.bootstrap-servers
以逗号分隔的主机:端口对列表,用于建立与Kafka群集的初始连接
spring.kafka.consumer.bootstrap-servers=TopKafka1:9092,TopKafka2:9092,TopKafka3:9092

spring.kafka.consumer.group-id=TyyLoveZyy
用来唯一标识consumer进程所在组的字符串,如果设置同样的group id,表示这些processes都是属于同一个consumer group,默认:""

spring.kafka.consumer.max-poll-records
max.poll.records条数据需要在session.timeout.ms这个时间内处理完,默认:500
spring.kafka.consumer.max-poll-records=500

spring.kafka.consumer.heartbeat-interval=3000
消费超时时间,大小不能超过session.timeout.ms,默认:3000

spring.kafka.consumer.enable-auto-commit=true
如果为真,consumer所fetch的消息的offset将会自动的同步到zookeeper。
这项提交的offset将在进程挂掉时,由新的consumer使用,默认:true

spring.kafka.consumer.auto-commit-interval=5000
consumer自动向zookeeper提交offset的频率,默认:5000

spring.kafka.consumer.auto-offset-reset=earliest
没有初始化的offset时,可以设置以下三种情况:(默认:latest)
earliest
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
latest
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据
none
topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常

spring.kafka.consumer.fetch-min-size=1
每次fetch请求时,server应该返回的最小字节数。如果没有足够的数据返回,
请求会等待,直到足够的数据才会返回。默认:1

spring.kafka.consumer.fetch-max-wait=500
Fetch请求发给broker后,在broker中可能会被阻塞的(当topic中records的总size小于fetch.min.bytes时),
此时这个fetch请求耗时就会比较长。这个配置就是来配置consumer最多等待response多久

 spring.kafka.consumer.client-id=1
消费者进程的标识。如果设置一个人为可读的值,跟踪问题会比较方便。。默认:""

spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
key的反序列化类。实现了org.apache.kafka.common.serialization.Deserializer接口

spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
值的反序列化类。实现了org.apache.kafka.common.serialization.Deserializer接口

 

posted @ 2019-12-26 22:22  弱水三千12138  阅读(6703)  评论(0编辑  收藏  举报