我正在使用Play框架和Apache Kafka。
我有一个POST方法,它向Kafka发送一条消息。 Kafka有一个API方法
public java.util.concurrent.Future send(ProducerRecord record, Callback callback)
其中Javadoc说
异步发送记录到主题并调用提供的 发送确认后回调。
我使用play框架公开了这个功能。我想从Controller方法返回Promise<Result>
,但无法弄清楚如何以非阻塞方式实现它。有人可以帮我这个吗?
答案 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())));
}
});