public static TopologyResponse toTopologyResponse(long key, TopologyResponseDto brokerResponse) { final TopologyResponse.Builder topologyResponseBuilder = TopologyResponse.newBuilder(); topologyResponseBuilder .setClusterSize(brokerResponse.getClusterSize()) .setPartitionsCount(brokerResponse.getPartitionsCount()) .setReplicationFactor(brokerResponse.getReplicationFactor()); final ArrayList<BrokerInfo> infos = new ArrayList<>(); brokerResponse .brokers() .forEach( broker -> { final Builder brokerInfo = BrokerInfo.newBuilder() .setNodeId(broker.getNodeId()) .setHost(bufferAsString(broker.getHost())) .setPort(broker.getPort()); broker .partitionStates() .forEach( partition -> { final Partition.Builder partitionBuilder = Partition.newBuilder(); partitionBuilder.setPartitionId(partition.getPartitionId()); partitionBuilder.setRole(remapPartitionBrokerRoleEnum(partition)); brokerInfo.addPartitions(partitionBuilder); }); infos.add(brokerInfo.build()); }); topologyResponseBuilder.addAllBrokers(infos); return topologyResponseBuilder.build(); }
public BrokerClusterStateImpl( final TopologyResponseDto topologyDto, final BiConsumer<Integer, SocketAddress> endpointRegistry) { clusterSize = topologyDto.getClusterSize(); partitionsCount = topologyDto.getPartitionsCount(); replicationFactor = topologyDto.getReplicationFactor(); topologyDto .brokers() .forEach( b -> { final int nodeId = b.getNodeId(); endpointRegistry.accept( nodeId, new SocketAddress(bufferAsString(b.getHost()), b.getPort())); brokers.add(nodeId); b.partitionStates() .forEach( p -> { final int partitionId = p.getPartitionId(); partitions.add(partitionId); if (p.isLeader()) { partitionLeaders.put(partitionId, nodeId); } }); }); }