使用@KafkaListener时如何检测Spring中不存在的主题
尝试使用@KafkaListener订阅不存在的主题时,会记录一条警告:使用@KafkaListener时如何检测Spring中不存在的主题,spring,apache-kafka,Spring,Apache Kafka,尝试使用@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
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;
}
};
}
@KafkaListener(topics=“not_exist”,groupId=“gg”,errorHandler=“onError”)
公共无效接收(字符串m){
日志信息(“Rcd:+m”);
}
...
@豆子
公共KafkaListenerErrorHandler onError(){
返回新的KafkaListenerErrorHandler(){
@凌驾
公共对象句柄错误(消息消息,ListenerExecutionFailedException e){
log.error(“handleError:{}消息:{}”,例如toString(),消息);
返回消息;
}
};
}
我想你可以在org/springframework/kafka/listener/KafkaListenerErrorHandler.java中找到答案
*@return除非带注释的方法具有{@code@SendTo}注释,否则将忽略返回值。