Spring boot 弹簧靴卡夫卡带手动锁定

Spring boot 弹簧靴卡夫卡带手动锁定,spring-boot,apache-kafka,kafka-consumer-api,spring-kafka,Spring Boot,Apache Kafka,Kafka Consumer Api,Spring Kafka,我有一个Springboot应用程序。使用此配置: kafka: consumer: listener: ack-mode: MANUAL_IMMEDIATE 广告此消费者: @KafkaListener(topics = "test", groupId = "group_id") public void consume(String message, Acknowledgment ack) throws IOException {

我有一个Springboot应用程序。使用此配置:

  kafka:
    consumer:
      listener:
        ack-mode: MANUAL_IMMEDIATE
广告此消费者:

@KafkaListener(topics = "test", groupId = "group_id")
    public void consume(String message, Acknowledgment ack) throws IOException {
            ack.acknowledge();
    }
但我在收到消息时出现以下错误:

org.springframework.messaging.converter.MessageConversionException: Cannot convert from [java.lang.String] to [org.springframework.kafka.support.Acknowledgment] for GenericMessage 

似乎您的YAML没有被读取;我刚测试过

校正

您的YAML无效-请删除
消费者
元素

spring:
卡夫卡:
消费者:
自动偏移重置:最早
听众:
确认模式:手动\u立即
而且效果很好;删除
ack模式
会产生与您看到的相同的错误

@springboot应用程序
公共类SO60929385应用程序{
公共静态void main(字符串[]args){
SpringApplication.run(So60929385Application.class,args);
}
@卡夫卡列斯汀(id=“so60929385”,topics=“so60929385”)
公共无效侦听(字符串输入、确认){
系统输出打印项次(输入);
确认();
}
@豆子
公共应用程序运行程序(KafkaTemplate模板){
返回参数->模板发送(“so60929385”、“foo”);
}
@豆子
公共新话题(){
返回TopicBuilder.name(“so60929385”).partitions(1).replications(1.build();
}
}

删除
消费者
元素。IDE应该可以帮助您进行属性验证。当启动使用者无法立即配置为自动提交ackMode MANUAL_时,出现此错误。您必须使用旧版本。设置
spring.kafka.consumer.enable-auto-commit:false
-自版本2.3(即spring Boot 2.2使用的版本)以来,默认情况下它一直是
false