如何将回调转换为Promise

时间:2015-09-15 09:25:17

标签: java callback playframework-2.0 promise

我正在使用Play框架和Apache Kafka。

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

public java.util.concurrent.Future send(ProducerRecord record, Callback callback)

其中Javadoc说

  

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

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

1 个答案:

答案 0 :(得分:1)

经过一些搜索,在this one的帮助下找到答案。

以下是代码

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

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