我们宁愿在生产者上使用异步请求/响应
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。P>
谢谢院长
似乎在卡夫卡(Kafka)正在进行的工作中,会引入异步呼叫模式,请检查一下:消费者和生产者
目前,您可以使用标准可召唤/执行者,并使用Google Guava的出色聆听方式向他们添加回调。您也可以通过Netflix探索Hystrix,以获取更多(复杂而灵活的)呼叫模式。
kafka添加了带有回调的异步发送。请参阅此处的文档。
Producer.Send(ProducerRecord Record,回调回调)
异步将记录发送到一个主题,并在确认发送后调用提供的回调。 发送是异步的,一旦记录存储在等待发送的记录的缓冲区中,此方法将立即返回。这允许并行发送许多记录,而无需阻止每次响应。