首页 > 解决方案 > 使用@KafkaListener时如何检测Spring中不存在主题

问题描述

当尝试使用@KafkaListener 订阅不存在的主题时,它会记录一个警告:

2021-04-22 13:03:56.710  WARN 20188 --- [ntainer#0-0-C-1] org.apache.kafka.clients.NetworkClient   : [Consumer clientId=consumer-gg-2, groupId=gg] Error while fetching metadata with correlation id 174 : {not_exist=UNKNOWN_TOPIC_OR_PARTITION}

如何检测和处理?我尝试了errorHandler,它没有被调用:

    @KafkaListener(topics = "not_exist", groupId = "gg", errorHandler = "onError")
    public void receive(String m) {
        log.info("Rcd: " + m);
    }

...

    @Bean
    public KafkaListenerErrorHandler onError() {
        return new KafkaListenerErrorHandler() {
            @Override
            public Object handleError(Message<?> message, ListenerExecutionFailedException e) {
                log.error("handleError Error: {} message: {}", e.toString(), message);
                return message;
            }
        };
    }

标签: springapache-kafka

解决方案


我想你可以在org/springframework/kafka/listener/KafkaListenerErrorHandler.java中找到答案

* @return the return value is ignored unless the annotated method has a {@code @SendTo} annotation.


推荐阅读