gpt4 book ai didi

apache-kafka - 当 Kafka 集群出现故障时,Kafka Streams 应用程序不会失败

转载 作者:行者123 更新时间:2023-12-03 17:16:27 26 4
gpt4 key购买 nike

我有一个 Kafka Streams 应用程序正在运行 (0.10.2.1)。当我关闭 Kafka 集群时,流应用程序继续等待下一条消息,当集群恢复时,它将继续使用消息。在集群关闭期间,应用程序 出现 工作正常。我已经测试了超过 45 分钟。

我希望 Kafka 抛出异常或停止。我已经配置了一个 StateListener在 KafkaStreams 关闭时记录日志,但它永远不会被调用。

kafkaStreams.setStateListener((newState, _) => {
if (newState == KafkaStreams.State.NOT_RUNNING) {
Log.error("Kafka died unexpectedly.")
}
})

无法连接到集群时,如何让 Kafka 抛出异常或关闭?

注意:这假设集群出现故障 该应用程序已启动

最佳答案

为什么您希望 Kafka Streams 应用程序关闭?

应用程序应该对代理失败有弹性,也就是说,保持耐心,直到代理恢复,而且看起来这就是它正在做的事情。如果您有多个 Kafka Streams 应用程序实例,并且其中一个失去与代理的连接,则负载将重新平衡到其余实例上。如果每个失去连接的实例都自行关闭,那么即使代理连接恢复,您也会丢失实例并失去冗余和并行性。现在的 Kafka Streams 是为弹性而设计的。我认为这是正确的行为。

恕我直言,如果您想检测代理(或连接)故障,这是监控用例,而不是将故障引入 Kafka Streams 应用程序。

关于apache-kafka - 当 Kafka 集群出现故障时,Kafka Streams 应用程序不会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44835302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com