Javaで、システムがkafkaに接続されているかどうかを検証するスモークテストを作成する必要があります。
誰か考えがありますか?私はこの投稿を見つけました:
Kafkaサーバーが実行されているかどうかを確認する方法は?
しかし、Javaコードから行うには複雑すぎて、私が使用すべき方向ではないと思います。
前もって感謝します。
私は同じ質問をしました、そして私は何の答えもなしにこの質問を残したくありません。接続を確認する方法についてよく読みました。見つけた答えのほとんどは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
文でラップして、例外をキャッチできます。
これを使用して、サーバーが実行されているかどうかを確認できます。
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
}