SpringBoot kafka 自定义配置

本文介绍了如何在SpringBoot中进行Kafka的自定义配置,包括KafkaBaseProp、KafkaConsumerProp、KafkaListenerProp和KafkaProducerProp四个部分,详细讲解了配置文件的定制、配置类的实现,以及KafkaTemplate的设置。同时,文章提到了消费者配置的特殊要求,指出Consumer只能接收List<ConsumerRecord>类型的消息。
摘要由CSDN通过智能技术生成

依赖

<dependency>
   <groupId>org.springframework.kafka</groupId>
    <artifactId>spring-kafka</artifactId>
</dependency>

配置文件: 部分为自定义

KafkaTemplateConfig:
  isOpen: true

spring:
  kafka:
    #指定kafka地址可以多个
    bootstrap-servers: 192.168.99.100:9092
    producer:
      #消息发送失败重试次数
      retries: 3
      #重试间隔
      retry_backoff_ms: 500
      #压缩消息,支持四种类型,分别为:none、lz4、gzip、snappy,默认为none,lz4压缩比最高
      compression-type: none
      #发送缓冲区大小32M
      buffer-memory: 33554432
      #去缓冲区中一次拉16k的数据,发送到broker
      batch-size: 16384
      #每条消息大小限制 1M
      max-request_size: 1048576
      #设置发送延时时间,如果在设置的时间内依然没有达到batch-size,依然发出消息给kafka集群
      linger_ms: 30
      #失败重试时,保证消息顺序性,会降低吞吐量
      max_in_flight_requests_per_connection: 1
      #开启发送消息幂等性(单分区)
      enable_idempotence: true
      #生产者空间不足时阻塞的时间,默认60s
      max_block_ms: 6000
      #acks = 0 如果设置为零,则生产者将不会等待来自服务器的任何确认,该记录将立即添加到套接字缓冲区并视为已发送。在这种情况下,无法保证服务器已收到记录,并且重试配置将不会生效(因为客户端通常不会知道任何故障),为每条记录返回的偏移量始终设置为-1。
      #acks = 1 这意味着leader会将记录写入其本地日志,但无需等待所有副本服务器的完全确认即可做出回应,在这种情况下,如果leader在确认记录后立即失败,但在将数据复制到所有的副本服务器之前,则记录将会丢失。
      #acks = all 这意味着leader将等待完整的同步副本集以确认记录,这保证了只要至少一个同步副本服务器仍然存活,记录就不会丢失,这是最强有力的保证,这相当于acks = -1的设置。
      acks: -1
      #key,value序列化器选择
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer
    listener:
      #是否开启批量处理
      batch_listener: true
      #线程数
      concurrency: 3
      #RECORD 当每⼀条记录被消费者监听器(ListenerConsumer)处理之后提交
      #BATCH 当每⼀批poll()的数据被消费者监听器(ListenerConsumer)处理之后提交
      #TIME 当每⼀批poll()的数据被消费者监听器(ListenerConsumer)处理之后,距离上次提交时间⼤于TIME时提交
      #COUNT 当每⼀批poll()的数据被消费者监听器(ListenerConsumer)处理之后,被处理record数量⼤于等于COUNT时提交
      #COUNT_TIME TIME | COUNT 有⼀个条件满⾜时提交
      #MANUAL 当每⼀批poll()的数据被消费者监听器(ListenerConsumer)处理之后, ⼿动调⽤Acknowledgment.acknowledge()后提交
      #MANUAL_IMMEDIATE ⼿动调⽤Acknowledgment.acknowledge()后⽴即提交,⼀般使⽤这种
      ack-mode: manual_immediate
      #消费超时时间
      poll-timeout: 3000
    consumer:
      #指定默认消费者group id
      group-id: testGroup
      #earliest
      #当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
      #latest
      #当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据
      #none
      #topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常
      auto-offset-reset: earliest
      # 是否开启自动提交
      enable-auto-commit: false
      #key, value的反序列化器
      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
      value-deserializer: org.apache.kafka.commo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值