Почему AdminClient не выдает исключение? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть 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
    }

Теперь у меня есть сценарий, когда Кафка находится в автономном режиме, и метод не возвращает ни false, ни true.

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Применяя комментарий, я не могу воспроизвести проблему, например, следующие

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

выводит crash, который показывает, что case _: ExecutionException ответвление было правильно выполнено.

0 голосов
/ 11 июля 2019
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
}

Причиной этого является то, что выдается другое исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...