【问题标题】:How to create concurrent message listener for Kafka topic with 1 partition如何为具有 1 个分区的 Kafka 主题创建并发消息侦听器
【发布时间】:2017-11-21 01:24:37
【问题描述】:

使用 Spring Kafka org.springframework.kafka.listener.ConcurrentMessageListenerContainer 根据 ContainerProperties 和主题中的分区数创建多个侦听器。 javadoc 表示“来自同一分区内的消息将按顺序处理”。因此,如果只有 1 个分区并且并发设置为 10,会发生什么 - 不会有任何并发​​?还是将消息分发给 10 个侦听器但无序?

【问题讨论】:

  • 经过更多研究,我猜如果有 10 个具有样本组 id 的消费者并且主题有 1 个分区,那么 10 个消费者中只有 1 个会收到消息,其余的消费者将是闲。我的理解正确吗?
  • 没错;只有一个消费者实例可以从单个分区消费。并发受分区数量限制。

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


【解决方案1】:

不,肯定只有一个目标听众。一个分区 - 每个消费者组的消费者一个进程。这是 Apache Kafka 的特性。那不是 Spring Kafka 的问题。

您最近可以使用TaskExecutor 从您的侦听器方法中并行来自该分区的消息。但这已经是你的应用程序了——框架不会为你做任何事情。只是因为目标 Kafka 系统的性质。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2020-06-27
    相关资源
    最近更新 更多