spring - 使用@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;
}
};
}
解决方案
我想你可以在org/springframework/kafka/listener/KafkaListenerErrorHandler.java中找到答案
* @return the return value is ignored unless the annotated method has a {@code @SendTo} annotation.
推荐阅读
- javascript - 未应用 Vue 样式
- python - 填充熊猫数据框中缺少的复合索引
- email - 如何使用 App 脚本向 Google 表格的编辑者发送电子邮件
- linux - 使用 GCC 和 Clang 将 Wireshark 交叉编译到 ARM
- reactjs - 我如何在反应测试中模拟道具方法?
- rust - 如何在 actix-web 提取器中使用异步代码?
- python - 遍历 url 端点并将 json 转换为 pandas 数据帧
- python - Pandas:在数据框中创建列并通过查看另一个数据框为该列分配值
- docker - 如何运行打包为具有代码覆盖率的 Linux docker 容器的 Asp.Net Core 应用程序?
- powershell - 在 C 以外的任何内容上设置权限时出现 SET-ACL 问题:在 1 个特定服务器上的驱动器