首页 > 解决方案 > 为什么 AdminClient 不抛出异常?

问题描述

我有一个 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 处于脱机状态,并且该方法不返回falseor true

我究竟做错了什么?

标签: scalaapache-kafka

解决方案


应用评论,我似乎无法复制该问题,例如,以下

  val kafkaFuture = new KafkaFutureImpl
  kafkaFuture.completeExceptionally(new RuntimeException("splosh"))
  println(
    try {
      kafkaFuture.get()
    } catch {
      case _: InterruptedException => "boom"
      case _: ExecutionException => "crash"
    }
  )

输出crash,这表明case _: ExecutionException分支被正确命中。


推荐阅读