web-dev-qa-db-ja.com

システムが接続されているかどうかを確認しますKafka

Javaで、システムがkafkaに接続されているかどうかを検証するスモークテストを作成する必要があります。

誰か考えがありますか?私はこの投稿を見つけました:

Kafkaサーバーが実行されているかどうかを確認する方法は?

しかし、Javaコードから行うには複雑すぎて、私が使用すべき方向ではないと思います。

前もって感謝します。

8
user2199630

私は同じ質問をしました、そして私は何の答えもなしにこの質問を残したくありません。接続を確認する方法についてよく読みました。見つけた答えのほとんどはZkとの接続を確認することでしたが、実際にはKafkaサーバーを使用して直接接続を確認したいと思います。

私がしたことは、単純なKafkaConsumerを作成し、すべてのトピックをlistTopics()でリストすることです。接続が成功した場合、あなたはリターンとして何かを得るでしょう。それ以外の場合は、TimeoutExceptionを取得します。

  def validateKafkaConnection(kafkaParams : mutable.Map[String, Object]) : Unit = {
    val props = new Properties()
    props.put("bootstrap.servers", kafkaParams.get("bootstrap.servers").get.toString)
    props.put("group.id", kafkaParams.get("group.id").get.toString)
    props.put("key.deserializer", "org.Apache.kafka.common.serialization.StringDeserializer")
    props.put("value.deserializer", "org.Apache.kafka.common.serialization.StringDeserializer")
    val simpleConsumer = new KafkaConsumer[String, String](props)
    simpleConsumer.listTopics()
  }

次に、このメソッドをtry-catch文でラップして、例外をキャッチできます。

8
dbustosp

これを使用して、サーバーが実行されているかどうかを確認できます。

ZkClient zkClient = new ZkClient("your_zookeeper_server", 5000 /* ZOOKEEPER_SESSION_TIMEOUT */, 5000 /* ZOOKEEPER_CONNECTION_TIMEOUT */, ZKStringSerializer$.MODULE$);
List<Broker> brokers = scala.collection.JavaConversions.seqAsJavaList(zkUtils.getAllBrokersInCluster());
if (brokers.isEmpty()) {
    // No brokers available
} else {
    // There are brokers available
}
2
Nico