【问题标题】:How to Convert callback to a Promise如何将回调转换为 Promise
【发布时间】:2015-12-11 11:51:44
【问题描述】:

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

我有一个向 Kafka 发送消息的 POST 方法。 Kafka有一个API方法

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

Javadoc 中提到的

异步发送一条记录到一个主题并调用提供的 确认发送时回调。

我正在使用 play 框架公开此功能。我想从 Controller 方法返回一个Promise<Result>,但不知道如何以非阻塞方式实现它。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: java callback playframework-2.0 promise


    【解决方案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())));
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2018-04-23
      • 2018-09-19
      • 2017-03-22
      • 1970-01-01
      • 2021-01-25
      • 2017-03-31
      相关资源
      最近更新 更多