【问题标题】:Is KafkaConsumer listTopics() method threadsafe?KafkaConsumer listTopics() 方法是线程安全的吗?
【发布时间】:2020-05-04 11:15:34
【问题描述】:

我在本地对其进行了测试,发现虽然无法从多个线程调用 poll,但 listTopics() 和 metrics() 方法有效。这是否意味着可以从多个线程调用这些方法。想在这里与专家确认以避免生产中的任何问题

【问题讨论】:

    标签: apache-kafka kafka-consumer-api


    【解决方案1】:

    这些是 Kafka Consumer 的方法,它作为客户端使用来自 Kafka 集群的记录。 消费者不是线程安全的。消费者维护与必要代理的 TCP 连接以获取数据。

    多线程处理

    Kafka 消费者不是线程安全的。所有网络 I/O 都发生在应用程序的线程中 拨打电话。

    确保多线程访问是用户的责任 已正确同步。非同步访问将导致ConcurrentModificationException

    所以 listTopics() 和 metrics() 方法不是线程安全的。您可以浏览 Kafka 源代码以获取更多详细信息。

    https://github.com/a0x8o/kafka/blob/master/clients/src/main/java/org/apache/kafka/clients/consumer/KafkaConsumer.java

    【讨论】:

    猜你喜欢
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    相关资源
    最近更新 更多