我们希望在生产者
上使用类似的异步请求/响应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并在我不断发送请求时收到响应。
感谢, 迪安
答案 0 :(得分:0)
Kafka似乎正在进行一项很好的工作,它将引入异步调用模式,请查看:Consumer和Producer
目前,您可以使用标准的Callable / Executors,并使用Google Guava的优秀ListenableFuture向他们添加回调。您还可以通过Netflix探索Hystrix以获得更多(复杂且灵活的)呼叫模式。
答案 1 :(得分:0)
Kafka已经通过回调添加了异步发送。请参阅文档here。
producer.send(ProducerRecord记录,回调回调)
异步发送记录到主题,并在确认发送后调用提供的回调。 发送是异步的,一旦记录存储在等待发送的记录缓冲区中,该方法将立即返回。这允许并行发送许多记录而不会阻塞,以便在每个记录之后等待响应。