小编典典

如何将回调转换为Promise

java

我正在使用播放框架和Apache Kafka。

我有一个POST方法,它将消息发送到Kafka。Kafka有一个API方法

public java.util.concurrent.Future
send(ProducerRecord记录,回调回调)

其中Javadoc说

异步将记录发送到主题,并在确认发送后调用提供的回调。

我正在使用play框架公开此功能。我想Promise<Result>从Controller方法返回a
,但无法弄清楚如何以非阻塞方式实现它。有人可以帮我弄这个吗?


阅读 326

收藏
2020-11-26

共1个答案

小编典典

经过一番搜索后,在此帮助下找到了答案。

以下是代码

RedeemablePromise<Result> promise = RedeemablePromise.empty();

kafkaProducer.send(record, (metadata, ex) -> {
    if (ex != null) {
        promise.failure(ex);
    } else {
        promise.success(created(Json.toJson(new ProduceResult())));
    }
});
2020-11-26