kafka有异步请求/响应java api吗?

时间:2014-03-07 21:19:54

标签: apache-kafka

我们希望在生产者

上使用类似的异步请求/响应
private class MyCallback implements ResponseCallback {
    public void response(Response r) {
        //handle failure or success.  If success, ack the upstream kafka
    }
}
producer.send(request, callback);

我唯一看到的是将producer.type设置为asynch,但调用只是一个异步请求而不等待任何响应......

producer.send(request);

这不幸地迫使我进行同步,这意味着在加载时,我的线程在kafka上等待可能会开始减慢速度,因为我更愿意只是用一堆请求猛击kafka并在我不断发送请求时收到响应。

感谢, 迪安

2 个答案:

答案 0 :(得分:0)

Kafka似乎正在进行一项很好的工作,它将引入异步调用模式,请查看:ConsumerProducer

目前,您可以使用标准的Callable / Executors,并使用Google Guava的优秀ListenableFuture向他们添加回调。您还可以通过Netflix探索Hystrix以获得更多(复杂且灵活的)呼叫模式。

答案 1 :(得分:0)

Kafka已经通过回调添加了异步发送。请参阅文档here

producer.send(ProducerRecord记录,回调回调)

  

异步发送记录到主题,并在确认发送后调用提供的回调。   发送是异步的,一旦记录存储在等待发送的记录缓冲区中,该方法将立即返回。这允许并行发送许多记录而不会阻塞,以便在每个记录之后等待响应。