等待kafkaTemplate等待未来

问题描述 投票:0回答:1

我正在执行异步操作,该操作将在循环中返回将来的对象(例如10条消息)。据我了解,当Future完成其任务时,回调方法会自动触发并执行。

假设我的第七个未来正处于悬而未决的阶段。我该如何特别完成这个未来?

以及处理这种情况的最佳方法是什么。

List<ListenableFuture<SendResult<String, String>>> cf = new ArrayList<ListenableFuture<SendResult<String, String>>>();

future = kafkaTemplate.send(topicName, message);
cf.add(future);

i++;

future.addCallback(new ListenableFutureCallback<SendResult<String, String>>() {

    @Override
    public void onSuccess(SendResult<String, String> result) {
        syso("sent success");
    }

    @Override
    public void onFailure(Throwable ex) {
        System.out.println(" sending failed");
    }
});
java apache-kafka future spring-kafka kafka-producer-api
1个回答
0
投票

您为什么要这样做?

[如果有异常,kafka-clients将调用带有该异常的模板的回调,并且该模板将异常完成将来的工作。

如果您确实出于某些原因需要这样做(但我想了解原因),可以将其转换为SettableListenerFuture

© www.soinside.com 2019 - 2024. All rights reserved.