Java 当我只想同时阅读消费记录时,是否必须同步消费记录?
当我从kafka轮询数据并需要使用异步方法读取记录时,我很困惑访问consumerRecords是否是线程安全的 代码片段如下所示:Java 当我只想同时阅读消费记录时,是否必须同步消费记录?,java,multithreading,apache-kafka,kafka-consumer-api,Java,Multithreading,Apache Kafka,Kafka Consumer Api,当我从kafka轮询数据并需要使用异步方法读取记录时,我很困惑访问consumerRecords是否是线程安全的 代码片段如下所示: ConsumerRecords<String,String> consumerRecords = kafkaConsumer.poll(100); //1. asynchronously read topic1 foo.asynMethod1(consumerRecords(topic1)); //2. asynchronously read topi
ConsumerRecords<String,String> consumerRecords = kafkaConsumer.poll(100);
//1. asynchronously read topic1
foo.asynMethod1(consumerRecords(topic1));
//2. asynchronously read topic2
bar.asynMethod2(consumerRecords(topic2));
ConsumerRecords ConsumerRecords=kafkaConsumer.poll(100);
//1. 异步读取主题1
foo.asynMethod1(消费者记录(主题1));
//2. 异步读取主题2
bar.asynMethod2(消费者记录(主题2));
只要您不写入一段数据,并且读卡器开始执行时该数据已经被填充,只要读卡器引用数据的引用保持不变,您就不会同时读取该数据,从而获得任何数据竞争
tl;dr:正如您在代码片段中指定的,不。只要您不写入数据,并且读卡器开始执行时该数据已经填充,您将不会同时读取该数据而获得任何数据竞争,前提是读者参考数据的参考保持不变
tl;dr:正如您在代码片段中指定的那样,不。这些记录是可编辑的,因此您必须复制或转储到列表中,以避免在这两个文件中增加相同的迭代器methods@cricket_007即使我用两种方法处理不同的主题?只要你使用同一个iterable对象,那么这些记录就是iterable,因此,您必须复制或转储到列表中,以避免在这两个列表中增加相同的迭代器methods@cricket_007即使我用两种方法处理不同的主题?只要你使用相同的iterable对象,那么是的