KafkaProducer onCompletion() 回调总是在同一个线程中执行吗?



Kafka API 0.10.1 : Link

是否可以保证在同一线程中按顺序调用 onCompletion 回调?文档说"请注意,回调通常会在生产者的 I/O 线程中执行"。所以我认为不会。

如果我想跟踪,例如,通过保留整数计数器发生的异常数,我是否需要使用 AtomicInteger?

或者,如果我想保留一个布尔标志来跟踪在最后一个回调中是否发生了异常,我是否需要使其易失性?

是否可以保证在同一线程中按顺序调用 onCompletion 回调?文档说"请注意,回调通常会在生产者的 I/O 线程中执行"。所以我认为不会。

一般没有。例如,默认情况下,有多个并行的正在进行的请求 - 这也取决于您的重试次数(默认值不是重试次数)。

如果我想跟踪,例如,通过保留整数计数器发生的异常数,我是否需要使用 AtomicInteger?

只有一个线程写入。所以严格没有。阅读线程可能会"错过"更新,但稍后您将阅读此更新。

或者,如果我想保留一个布尔标志来跟踪在最后一个回调中是否发生了异常,我是否需要使其易失性?

可能会有所帮助。

此外:您可以在主线程中"阻止并等待"回调。

有关更多详细信息,请参阅 http://docs.confluent.io/current/clients/producer.html#synchronous-writes

相关内容

  • 没有找到相关文章

最新更新