【问题标题】:Spring Kafka Consumers - Concurrent Listeners vs Non Concurrent Listeners in the CloudSpring Kafka Consumers - 云中的并发侦听器与非并发侦听器
【发布时间】:2018-03-07 02:23:40
【问题描述】:

我使用 Spring Kafka 创建了一个 Kafka 消费者并将其部署在 Cloud Foundry 中。该主题有 10 个分区。我计划将应用程序扩展到 10 个实例,以便每个实例都可以使用来自一个分区的消息。 Spring Kafka 也支持并发消息侦听器容器,我猜它支持从每个分区创建多个线程来使用。因此,例如,如果我有 5 个使用者实例,则每个使用者实例可能有 2 个线程从分区中消耗。既然我无论如何都计划为每个分区创建 1 个应用程序实例,那么使用并发消费者有什么好处吗?

由于我的首要任务是快速处理主题中的消息,我认为为每个分区提供 1 个应用实例将为每个分区中的消息提供足够的资源来处理。

【问题讨论】:

    标签: apache-kafka kafka-consumer-api cloud-foundry spring-kafka


    【解决方案1】:

    没错,你只需要在同一个消费者组中有10个单线程消费者。由于您恰好有 10 个分区,因此 Kafka 中的重新平衡机制将在您的 10 个实例之间分配它们。

    该容器中的并发将是不必要的。考虑改用KafkaMessageListenerContainer

    【讨论】:

    • 谢谢!当我的容器一个一个启动时,Kafka 会自动重新平衡吗?
    • 没错,但要确保所有的都连接到同一个Kafka集群
    • 我有多个代理,并且我在引导服务器中以逗号分隔的形式提供了这些代理。这是否符合集群条件?
    • 如果我使用 ConcurrentKafkaListenerFactory 并将并发设置为 1 ,是否与使用 KafkaMessageListenerContainer 相同?
    • 配置是正确的,但根据 Kafka 架构,必须将它们全部收集到集成中。是的,那个配置和我们说的一样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 2023-01-07
    • 2021-08-31
    • 2023-04-06
    相关资源
    最近更新 更多