java - Kafka客户端有时会无意义地发送元数据请求吗?
问题描述
条件:
- 主题“myTopic”不存在。
- 在
server.properties
,auto.create.topics.enable=false
问题:
当消息发送到 时myTopic
,Kafka 客户端收到 UNKNOWN_TOPIC_OR_PARTITION 错误。于是它开始疯狂地更新元数据,永不停息。合理吗?
@RequestMapping("send")
public void hello() {
template.send("myTopic", "foo1")
.addCallback(new ListenableFutureCallback<SendResult<String, String>>() {
@Override
public void onFailure(Throwable ex) {
log.error("send error",ex);
}
@Override
public void onSuccess(SendResult<String, String> result) {
log.info("send success={}",result);
}
});
}
卡夫卡生产者日志:
17:40:09.408 [kafka-producer-network-thread | producer-1] WARN o.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Error while fetching metadata with correlation id 9640 : {myTopic3=UNKNOWN_TOPIC_OR_PARTITION}
17:40:09.408 [kafka-producer-network-thread | producer-1] DEBUG org.apache.kafka.clients.Metadata - [Producer clientId=producer-1] Requesting metadata update for topic myTopic3 due to error UNKNOWN_TOPIC_OR_PARTITION
17:40:09.408 [kafka-producer-network-thread | producer-1] DEBUG org.apache.kafka.clients.Metadata - [Producer clientId=producer-1] Updated cluster metadata updateVersion 9636 to MetadataCache{cluster=Cluster(id = N7hvdHK5TK-JgLv8wVpZuA, nodes = [localhost:9092 (id: 0 rack: null)], partitions = [], controller = localhost:9092 (id: 0 rack: null))}
17:40:09.512 [kafka-producer-network-thread | producer-1] DEBUG o.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Sending metadata request MetadataRequestData(topics=[MetadataRequestTopic(name='myTopic3')], allowAutoTopicCreation=true, includeClusterAuthorizedOperations=false, includeTopicAuthorizedOperations=false) to node localhost:9092 (id: 0 rack: null)
17:40:09.513 [kafka-producer-network-thread | producer-1] WARN o.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Error while fetching metadata with correlation id 9641 : {myTopic3=UNKNOWN_TOPIC_OR_PARTITION}
17:40:09.513 [kafka-producer-network-thread | producer-1] DEBUG org.apache.kafka.clients.Metadata - [Producer clientId=producer-1] Requesting metadata update for topic myTopic3 due to error UNKNOWN_TOPIC_OR_PARTITION
17:40:09.513 [kafka-producer-network-thread | producer-1] DEBUG org.apache.kafka.clients.Metadata - [Producer clientId=producer-1] Updated cluster metadata updateVersion 9637 to MetadataCache{cluster=Cluster(id = N7hvdHK5TK-JgLv8wVpZuA, nodes = [localhost:9092 (id: 0 rack: null)], partitions = [], controller = localhost:9092 (id: 0 rack: null))}
...
...
解决方案
推荐阅读
- c# - 要成为 XML 可序列化的,从 IEnumerable 继承的类型必须在其继承的所有级别上都有 ADD(System.Object) 的实现
- flutter - webview_flutter 不适用于颤振 2(在颤振 2 前工作)
- android - Android WebView 中的深度链接
- c# - Visual Studio 阻止 WPF 项目中的串行端口连接
- python - 如何防止 python BeautifulSoup 用十六进制代码替换转义序列?
- optaplanner - 尝试在 Optaplanner 中启用多线程时没有已知的 workingObject
- php - SQL 错误访问论坛部分“查看您的帖子”
- jquery - 我无法将我在 jquery 中创建的按钮重定向到控制器
- python - 在 NetworkX 上使用广度优先搜索来查找前驱只为每个节点返回 1 个前驱
- swift - SwiftUI 中 Button 和 Image 的可点击区域