1、 AdminClient describeConsumerGroups 这个API获取不到组成员真实的IP地址
2、 kafka broker版本:0.11.0.0;kafka client jar: org.apache.kafka-kafka_2.11-2.0.0
是生产环境出现这个问题,kafka broker使用的是阿里云服务器,三个节点。外网:弹性共用IP;内网是三个不同的内网IP.
需求是获取到消费者实例所在主机的IP,生产环境下获取到的是kafak broker其中一个节点的地址,而在本地环境(使用了Vmware)可以获取到消费者实例的实际地址,而非broker的地址。
以下是示例代码:
List<String> groupIds = new ArrayList<String>();
groupIds.add("TEST-GROUP");
DescribeConsumerGroupsResult describeConsumerGroupsResult = adminClient.describeConsumerGroups(groupIds);
Map<String,ConsumerGroupDescription> resultMap = describeConsumerGroupsResult.all().get();
resultMap.forEach((group,description)->{
System.out.println(group);
Collection<MemberDescription> members = description.members();
for(MemberDescription member:members){
String host = member.host();
System.out.println(host);
}
});
获取不到的,它获取的是每个kafka节点listeners配置的,或者是默认的内部ip。
你的答案