我正在执行异步操作,该操作将在循环中返回将来的对象(例如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");
}
});
答案 0 :(得分:0)
您为什么要这样做?
如果有异常,则kafka-clients会使用该异常调用模板的回调,并且该模板将异常完成将来的工作。
如果您出于某些原因确实需要这样做(但我想了解原因),可以将其转换为SettableListenerFuture
。