【问题标题】:KafkaConsumer visibility across threadsKafkaConsumer 跨线程可见性
【发布时间】:2021-10-26 23:25:08
【问题描述】:

我有一个运行有两个线程的应用程序。这些线程在它们之间共享一个 KafkaConsumer 实例。

KafkaConsumer 是通过禁用自动提交配置创建的。一个线程将根据一些外部输入将主题分区分配给 KafkaConsumer 实例。另一个线程不断轮询主题,处理记录并在最后提交偏移量。

现在,假设主题分区分配在 Thread-1 中发生了更改。我们可以做些什么来确保 Thread-2 可以看到这些变化?即 Thread-2 的 KafkaConsumer 将知道主题分区已在 Thread-1 中更新。

将变量定义为 volatile 是否解决了这个问题?还是我们应该做更多的事情?由于我是 Java 多线程的新手,请提供代码示例的解释。

【问题讨论】:

    标签: java apache-kafka kafka-consumer-api


    【解决方案1】:

    一个线程将根据一些外部输入将主题分区分配给 KafkaConsumer 实例。另一个线程不断地轮询主题,处理记录并在最后提交偏移量。

    根据 javadoc(Multi-threaded Processing 部分):

    Kafka 消费者不是线程安全的。

    我不太确定您是否可以在一个线程中更改分区分配并查看另一个线程中的更改。

    【讨论】:

      猜你喜欢
      • 2013-03-05
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多