Kafka是否有异步请求/响应的Java API?

7
我们更倾向于在生产者上使用异步请求/响应,如下所示。
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

看起来Kafka正在进行中的工作会引入异步调用模式,查看这个:消费者生产者

目前,您可以使用标准的Callable/Executors,使用Google Guava的优秀ListenableFuture为它们添加回调。您还可以探索Netflix的Hystrix以获取更多(复杂和灵活)的调用模式。


0

Kafka已经添加了带有回调的异步发送。请查看此处的文档。

producer.send(ProducerRecord record, Callback callback)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接