如何将回调转换为Promise [英] How to Convert callback to a Promise

查看:579
本文介绍了如何将回调转换为Promise的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using play framework and Apache Kafka.

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

I have a POST method which sends a message to Kafka. Kafka has an API method

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

其中Javadoc表示

of which the Javadoc says


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

Asynchronously send a record to a topic and invoke the provided callback when the send has been acknowledged.

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

I am exposing this functionality using the play framework. I want to return a Promise<Result> from the Controller method but can't figure out how to implement this in a non-blocking way. Can someone help me with this?

推荐答案

/stackoverflow.com/questions/30956704/java-scala-future-driven-by-a-callback>这是一个。

After some searching found the answer with some help from 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())));
    }
});

这篇关于如何将回调转换为Promise的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆