我正在使用 play 框架和 Apache Kafka。
我有一个 POST 方法,可以向 Kafka 发送消息。 Kafka有一个API方法
公共 java.util.concurrent.Future 发送(ProducerRecord 记录,
回调回调) http://kafka.apache.org/082/javadoc/org/apache/kafka/clients/producer/KafkaProducer.html#send%28org.apache.kafka.clients.producer.ProducerRecord,%20org.apache.kafka.clients.producer.Callback%29
Javadoc 说
异步发送记录到主题并调用提供的
当发送被确认时回调。
我使用 play 框架公开此功能。我想返回一个Promise<Result>
从控制器方法,但无法弄清楚如何以非阻塞方式实现这一点。有人可以帮我弄这个吗?
经过一番搜索后,在一些帮助下找到了答案this one https://stackoverflow.com/questions/30956704/java-scala-future-driven-by-a-callback.
以下是代码
RedeemablePromise<Result> promise = RedeemablePromise.empty();
kafkaProducer.send(record, (metadata, ex) -> {
if (ex != null) {
promise.failure(ex);
} else {
promise.success(created(Json.toJson(new ProduceResult())));
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)