【问题标题】:Getting KafkaConsumer is not safe for multi-threaded access error when I use CuratorFrameworkFactory.newClient()当我使用 CuratorFrameworkFactory.newClient() 时,获取 KafkaConsumer 对于多线程访问错误是不安全的
【发布时间】:2019-05-19 16:47:24
【问题描述】:

我在下面收到此错误:

java.util.ConcurrentModificationException: KafkaConsumer is not safe for multi-threaded access

当我将它包含在我的代码中时:

CuratorFrameworkFactory.newClient()

我不明白是什么导致了错误。有什么帮助吗?

谢谢。

【问题讨论】:

  • CuratorFrameworkFactory.newClient() 创建一个动物园管理员客户端。这似乎无关紧要。您创建的 Kafka 消费者可能会从一个以上的线程访问。检查所有引用消费者实例的地方。
  • @asolanki 这应该是无关紧要的,但如果我注释掉那行错误就会消失。
  • 不确定使用 CuratorFramework 的具体要求是什么。顺便说一句,您使用的是什么 Kafka 版本?

标签: java multithreading apache-kafka apache-curator


【解决方案1】:

Kafka Javdocs 明确提到:

Kafka 消费者不是线程安全的。所有网络 I/O 都发生在进行调用的应用程序的线程中。确保多线程访问正确同步是用户的责任。非同步访问会导致 ConcurrentModificationException。

更多详情请见http://kafka.apache.org/21/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#multithreaded

【讨论】:

    猜你喜欢
    • 2018-10-06
    • 1970-01-01
    • 2020-07-29
    • 2017-12-20
    • 1970-01-01
    • 2021-06-14
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多