【问题标题】:does kafka have a async request/response java api?kafka 有异步请求/响应 java api 吗?
【发布时间】:2014-04-11 05:41:05
【问题描述】:

我们更喜欢在生产者上使用异步请求/响应

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 并接收响应。

谢谢, 院长

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    Kafka 添加了带有回调的异步发送。请参阅文档here

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

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

    【讨论】:

      【解决方案2】:

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

      目前,您可以使用标准的 Callable/Executors 并使用 Google Guava 出色的 ListenableFuture 向它们添加回调。您还可以探索 Netflix 的 Hystrix,了解更多(复杂和灵活)的调用模式。

      【讨论】:

        猜你喜欢
        • 2018-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多