AdminClient
的API包含方法describeLogDirs,在两个签名中都需要“代理列表”。引号中的表达式正是javadoc讲述的内容-不再更多。
我必须为此函数提供什么参数?我的第一个猜想是一个从0或1开始到复制因子的序列,但是后来我在应用程序的日志中看到以下(不相关的)行,向我表明我可能必须期望像1001
这样的东西。>
13:47:11.931 [main] DEBUG o.a.k.c.consumer.internals.Fetcher - [Consumer clientId=myInstance-1725351556, groupId=] Sending READ_UNCOMMITTED IncrementalFetchRequest(toSend=(), toForget=(), implied=(myexample-0)) to broker example.com:9092 (id: 1001 rack: null)
我通过对1001
进行一次硬编码来验证了这一点:
List<Integer> brokers = Collections.singletonList(1001);
DescribeLogDirsResult result = adminClient.describeLogDirs(brokers);
现在:如何用我的kafka客户端的实时值填充变量brokers
? (我的代码中有Producer
和adminClient
实例)?我找不到此呼叫的任何示例代码。
更新(解决方案):这是我现在使用的最终代码行:
List<Integer> brokers = adminClient.describeCluster().nodes().get().stream().map(Node::id).collect(Collectors.toList());
答案 0 :(得分:0)
您可以使用describeCluster()
来获取特定于节点的详细信息,例如主机,端口和ID。
public abstract DescribeClusterResult describeCluster(DescribeClusterOptions options)
获取有关的信息 集群中的节点。
参数:options-要使用的选项 获取有关群集的信息时。
返回:
DescribeClusterResult
。
示例:
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092,localhost:9093");
AdminClient adminClient = AdminClient.create(props);
DescribeClusterResult describeClusterResult = adminClient.describeCluster();
Collection<Node> clusterDetails = describeClusterResult.nodes().get();