Spring-Kafka ―― 实现批量消费和手动提交offset

匿名 (未验证) 提交于 2019-12-02 23:48:02

spring-kafka的官方文档介绍,可以知道自1.1版本之后,

@KafkaListener开始支持批量消费,只需要设置batchListener参数为true

把application.yml中的enable-auto-commit设置为false,设置为不自动提交

@Bean public KafkaListenerContainerFactory<?> batchFactory(ConsumerFactory consumerFactory){     ConcurrentKafkaListenerContainerFactory<Integer,String> factory =     new ConcurrentKafkaListenerContainerFactory<>();     factory.setConsumerFactory(consumerFactory);     factory.setConcurrency(10);     factory.getContainerProperties().setPollTimeout(1500);     factory.setBatchListener(true);//设置为批量消费,每个批次数量在Kafka配置参数中设置
    factory.getContainerProperties().setAckMode(ContainerProperties.AckMode.MANUAL_IMMEDIATE);//设置手动提交ackMode
  return factory; }
   //批量消息     @KafkaListener(topics = {"first_top"},containerFactory="batchFactory")     public void consumerBatch(List<ConsumerRecord<?, ?>> records, Acknowledgment ack){         log.info("接收到消息数量:{}",record.size());
       //手动提交       ack.acknowledge();
}

这里containerFactory = “batchFactory”要指定为批量消费

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!