如何判断kafka集群是否可用
和判断zookeeper集群是否可用一样,也没有更好的把办法,下面的办法也是由client发起一个基本的kafka命令,看看命令的执行结果是否正常。
这个例子采用的命令是list所有的topic,看看命令能否执行成功。
下面是golang的客户端使用github.com/Shopify/sarama库的例子。
package main
import (
"log"
"time"
"github.com/Shopify/sarama"
)
var KAFKA_BROKERS = []string { "kafka1.example.com:9092",
"kafka2.example.com:9092",
"kafka3.example.com:9092"}
func main() {
if checkKafka() {
log.Printf("Check kafka status success\n")
} else {
log.Printf("Check kafka status failure\n")
}
}
func checkKafka() bool {
config := sarama.NewConfig()
client, err := sarama.NewClient(KAFKA_BROKERS, config)
if err != nil {
log.Printf("ERROR: Unable to create kafka client, err=[%v]", err)
return false
}
defer client.Close()
topics, err := client.Topics()
if err != nil {
log.Printf("ERROR: Unable to list kafka topics, err=[%v]", err)
return false
}
log.Printf("Get total topics count=[%d]\n", len(topics))
for i, topic := range topics {
log.Printf("\tTopic[%d]: [%s]\n", i, topic)
}
return true
}
有疑问加站长微信联系(非本文作者)