我正在使用播放框架和Apache Kafka。
我有一个POST方法,它将消息发送到Kafka。Kafka有一个API方法
public java.util.concurrent.Future send(ProducerRecord记录,回调回调)
其中Javadoc说
异步将记录发送到主题,并在确认发送后调用提供的回调。
我正在使用play框架公开此功能。我想Promise<Result>从Controller方法返回a ,但无法弄清楚如何以非阻塞方式实现它。有人可以帮我弄这个吗?
Promise<Result>
经过一番搜索后,在此帮助下找到了答案。
以下是代码
RedeemablePromise<Result> promise = RedeemablePromise.empty(); kafkaProducer.send(record, (metadata, ex) -> { if (ex != null) { promise.failure(ex); } else { promise.success(created(Json.toJson(new ProduceResult()))); } });