Spring Boot Kafka с подтверждением MANUAL_IMMEDIATE - PullRequest
3 голосов
/ 30 марта 2020

У меня есть приложение 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 

1 Ответ

0 голосов
/ 30 марта 2020

Похоже, что ваш YAML не читается; Я только что проверил это

ИСПРАВЛЕНИЕ

У вас неверный YAML - удалите элемент consumer.

spring:
  kafka:
    consumer:
      auto-offset-reset: earliest
    listener:
      ack-mode: MANUAL_IMMEDIATE

И все заработало; удаление ack-mode дает мне ту же ошибку, которую вы видите.

@SpringBootApplication
public class So60929385Application {

    public static void main(String[] args) {
        SpringApplication.run(So60929385Application.class, args);
    }

    @KafkaListener(id = "so60929385", topics = "so60929385")
    public void listen(String in, Acknowledgment ack) {
        System.out.println(in);
        ack.acknowledge();
    }

    @Bean
    public ApplicationRunner runner(KafkaTemplate<String, String> template) {
        return args -> template.send("so60929385", "foo");
    }

    @Bean
    public NewTopic topic() {
        return TopicBuilder.name("so60929385").partitions(1).replicas(1).build();
    }
}
...