kafkaproducer oncompletion()回调是否总是在同一个线程中执行?

gpfsuwkq  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(463)

Kafkaapi 0.10.1:链接
有没有保证oncompletion回调在同一个线程中按顺序调用?文档中说“注意回调通常会在生产者的i/o线程中执行”。所以我想不会。
例如,如果我想跟踪通过保持整数计数器发生的异常数,我需要使用atomicinteger吗?
或者,如果我想保留一个布尔标志来跟踪在上一次回调中是否发生了异常,我需要使它变得易变吗?

qlzsbp2j

qlzsbp2j1#

有没有保证oncompletion回调在同一个线程中按顺序调用?文档中说“注意回调通常会在生产者的i/o线程中执行”。所以我想不会。
通常不会。例如,默认情况下有多个并行的飞行中请求——这也取决于您的重试次数(默认情况下不是重试)。
例如,如果我想跟踪通过保持整数计数器发生的异常数,我需要使用atomicinteger吗?
只有一个线程在写。所以严格来说不是。阅读线程可能会“错过”一个更新,但是您稍后会阅读这个更新。
或者,如果我想保留一个布尔标志来跟踪在上一次回调中是否发生了异常,我需要使它变得易变吗?
可能会有帮助。
此外:您可以在主线程中“阻塞并等待”回调。
有关详细信息,请参阅http://docs.confluent.io/current/clients/producer.html#synchronous-写入

相关问题