我有一个Kafka AdminClient,当Kafkaserver处于活动状态时,它将返回true,否则返回false。
private def health(server: String): Boolean = {
val props = new Properties
props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, server)
props.put(AdminClientConfig.CONNECTIONS_MAX_IDLE_MS_CONFIG, "10000")
props.put(AdminClientConfig.REQUEST_TIMEOUT_MS_CONFIG, "5000")
try {
AdminClient
.create(props)
.listTopics()
.names()
.get()
true
} catch {
case _: InterruptedException => false
case _: ExecutionException => false
}
现在,我有一种情况,Kafka处于脱机状态,并且该方法都不返回false
或true
。
我在做什么错了?
答案 0 :(得分:1)
应用评论后,我似乎无法复制该问题,例如以下内容
val kafkaFuture = new KafkaFutureImpl
kafkaFuture.completeExceptionally(new RuntimeException("splosh"))
println(
try {
kafkaFuture.get()
} catch {
case _: InterruptedException => "boom"
case _: ExecutionException => "crash"
}
)
输出crash
,表明case _: ExecutionException
分支被正确命中。
答案 1 :(得分:0)
import scala.util.Try
private def health(server: String): Boolean = {
val props = new Properties
props.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, server)
props.put(AdminClientConfig.CONNECTIONS_MAX_IDLE_MS_CONFIG, "10000")
props.put(AdminClientConfig.REQUEST_TIMEOUT_MS_CONFIG, "5000")
Try (
AdminClient
.create(props)
.listTopics()
.names()
.get()
).isSuccess
}
发生这种情况的原因是引发了另一个异常。