java - 当我只想并发读取ConsumerRecords时,是否必须同步ConsumerRecords?

标签 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 topic2
bar.asynMethod2(consumerRecords(topic2));

最佳答案

只要您不写入一段数据,并且在读取器开始执行时该数据已经填充,您将不会因同时读取该数据而产生任何数据争用,前提是读取器引用数据的引用保持不变。

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

关于java - 当我只想并发读取ConsumerRecords时,是否必须同步ConsumerRecords?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58160968/

相关文章:

javascript - Electron UI BrowserWindow 卡住主 BrowserWindow

python - 编写在 Python 中使用的并行 C/C++ 模块的最简单方法

c++ - Qt:qthread 在关闭期间线程仍在运行时被销毁

java - 从 Android 设备访问 SQL DB 时,我的 httpEntity 返回 null,任何人都可以告诉我这是为什么吗?

java - Bittorrent 协议(protocol)中的 KeepAlive 消息

java - Producer.send 不接受 KeyedMessage 类型

node.js - kafka-node 消费者收到 offsetOutOfRange 错误

docker - 无法使用 docker-compose 创建 kafka 主题

关于静态的Java问题

java - 访客模式 : overriding vs overloading