首先,我从kafka轮询数据,并且需要使用异步方法读取记录,如果对使用ConsumerRecords是线程安全的,我感到困惑。

代码段如下:

ConsumerRecords<String,String> consumerRecords = kafkaConsumer.poll(100);
//1. asynchronously read topic1
foo.asynMethod1(consumerRecords(topic1));
//2. asynchronously read topic2
bar.asynMethod2(consumerRecords(topic2));

最佳答案

只要您不写入数据,并且在读取器开始执行时该数据已经被填充,那么只要读取器所引用的引用,您就不会从同时读取该数据中获得任何数据竞争。数据保持不变。

tl; dr:正如您在代码片段中指定的那样,否。

10-05 21:23