@Override
    public GetNodesResult getNodes(Collection<Integer> nodeIdList, GetNodesOptions options) {
        final KafkaFutureImpl<List<NodeMetadata>> future = new KafkaFutureImpl<>();
        final long now = time.milliseconds();
        final Call call = new Call(
            "getNodes", calcDeadlineMs(now, options.timeoutMs()), new LeastLoadedBrokerOrActiveKController()) {

            private List<NodeMetadata> createResult(final AutomqGetNodesResponse response) {
                return response.data().nodes().stream().map(NodeMetadata::new).collect(Collectors.toList());
            }

            @Override
            AutomqGetNodesRequest.Builder createRequest(int timeoutMs) {
                return new AutomqGetNodesRequest.Builder(new AutomqGetNodesRequestData().setNodeIds(new ArrayList<>(nodeIdList)));
            }

            @Override
            void handleResponse(AbstractResponse response) {
                final AutomqGetNodesResponse resp = (AutomqGetNodesResponse) response;
                if (resp.data().errorCode() == Errors.NONE.code()) {
                    future.complete(createResult(resp));
                } else {
                    future.completeExceptionally(Errors.forCode(resp.data().errorCode()).exception());
                }
            }

            @Override
            void handleFailure(Throwable throwable) {
                completeAllExceptionally(Collections.singletonList(future), throwable);
            }
        };

        runnable.call(call, now);
        return new GetNodesResult(future);
    }
Returns the broker id pertaining to the given resource, or null if the resource is not associated
with a particular broker.
clients/src/main/java/org/apache/kafka/clients/admin/KafkaAdminClient.java