List<Broker> listBrokers() {
final ZkConnection zkConnection = new ZkConnection(connectionString);
final int sessionTimeoutMs = 10 * 1000;
final int connectionTimeoutMs = 20 * 1000;
final ZkClient zkClient = new ZkClient(connectionString,
sessionTimeoutMs,
connectionTimeoutMs,
ZKStringSerializer$.MODULE$);
final ZkUtils zkUtils = new ZkUtils(zkClient, zkConnection, false);
scala.collection.JavaConversions.seqAsJavaList(zkUtils.getAllBrokersInCluster());
}
6条答案
按热度按时间cgyqldqp1#
如果你想从zookeeper获取经纪人或其他Kafka信息
kafka.utils.ZkUtils
提供了一个很好的界面。下面是我必须列出所有zookeeper代理的代码(还有很多其他方法):shyt4zoc2#
一个好的起点是kafka附带的shell脚本示例。在发行版的/bin目录中,可以使用一些shell脚本,其中之一是./kafka-topic-list.sh如果运行该脚本而不指定主题,它将返回所有主题及其元数据。请参见:https://github.com/apache/kafka/blob/0.8/bin/kafka-list-topic.sh
shell脚本依次运行:https://github.com/apache/kafka/blob/0.8/core/src/main/scala/kafka/admin/listtopiccommand.scala
以上都是对0.8kafka版本的引用,因此如果您使用的是不同的版本(甚至是点差异),请确保在github上使用适当的分支/标记
ldxq2e6h3#
您可以使用zookeeper api获取代理列表,如下所述:
使用此代理列表可以使用以下链接获取所有主题
https://cwiki.apache.org/confluence/display/kafka/finding+topic+and+partition+leader
plupiseo4#
使用scala:
plicqrtu5#
Kafka0.9.0
您可以使用提供的使用者方法listtopics()列出服务器中的主题;
如。
xqk2d5yq6#
我认为这是最好的方法: