springboot-kafka总结

参数

ProducerConfig 生产者参数配置

  • bootstrap.servers 主机:端口 列表,用来建立与kafka的初始化连接
  • retries 启用重试失败的发送次数
  • acks
    • 0 生产者不会等待服务其确认
    • 1 不等待副本确认,leader直接最初回应
    • all/-1 leader等待所有副本确认后做出回应
  • batch.size 当多个记录被发送到同一分区时,生产者将这些记录进行批处理为更少的请求,默认值 16384字节
  • key.serializer key的序列化类
  • value.serializer value的序列化类

ConsumerConfig 消费者参数配置

  • bootstrap.servers
  • group.id 消费者所属的消费者组的唯一标识
  • enable.auto.commit 自动提交offset(记录消息在分区的位置) 默认true
    • auto.commit.interval.ms 自动提交时间间隔 默认值是 5000ms
    • 设置自动提交后会间隔指定的时间,或者再次从topic取数据时,将会提交最后一次的offset
    • 我们可以不设置自动提交,可以手动提交
  • auto.offset.reset
    当Kafka中没有初始偏移量或者服务器上不再存在当前偏移量时采取的策略
    • earliest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
    • latest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据
    • none topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常
  • max.poll.records 一次调用poll() 操作时返回的最大记录数
  • key.serializer key的序列化类
  • value.serializer value的序列化类

生产者

KafkaTemplate<?,?> 生产者 kafkaTemplate
kafkaTemplate.send() 返回ListenableFuture,可以 addCallBack

消费者

@KafkaListener

  • 注解,添加到方法上面,收到指定topic的方法时会执行方法
  • 参数
    • topics 监听的topic
    • containerFactory 配置类
  • 描述的方法的参数 ConsumerRecord<String, String> record

KafkaListenerContainerFactory

  • 消费者配置类
  • ConcurrentKafkaListenerContainerFactory<>();
    • .setConsumerFactory(consumerFactory()); 常规参数
    • .setConcurrency(x); 消费者并发监听线程数
      • 所有机器的总x > topic 分区数 线程冗余
      • 所有机器的总x = topic 分区数 刚好
      • 所有机器的总x < topic 分区数 一个线程监听多个分区

      对于一个组,一个分区只会分配给组下的一个消费者线程

    • .setBatchListener(true); 批量获取record,配合max.poll.record配置
    • .getContainerProperties().setPollTimeout(3000);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值