【问题标题】:Spring Kafka - Consumer, container and listenerSpring Kafka - 消费者、容器和监听器
【发布时间】:2018-11-08 05:07:20
【问题描述】:

这些类到底是什么?我整天都在阅读它,无法理解它。它究竟是如何连接到逻辑 Kafka 消费者的?

可以从一个分区消费的逻辑消费者到底是什么(是KafkaListener吗?)。如果我想创建多个消费者我应该怎么做,我应该创建更多@KafkaListeners。我是否需要为每个分区指定@KafkaListener。或者我可以通过使用 ConcurrentMessageListenerContainer 以某种方式解决它吗?还是应该多次启动整个上下文?

我完全不明白。

【问题讨论】:

  • 您好 Zveratko,我遇到了同样的问题。您能否让我知道这些类到底在做什么以及它们是如何被用作性能方面的。谢谢和问候

标签: apache-kafka


【解决方案1】:

如果您在使用默认选项和 'KafkaListenr' 注释时,它将运行一个 KafkaConsumer 但是,您使用 ConcurrentMessageListenerContainer 和并发属性大于主题的分区大小,它将运行多个消费者

如果您设置并发,请创建一个具有该大小的 Consumer 的 KafkaMessageListenerContainer。 (https://github.com/spring-projects/spring-kafka/blob/master/spring-kafka/src/main/java/org/springframework/kafka/listener/ConcurrentMessageListenerContainer.java#L149)

参考:https://docs.spring.io/spring-kafka/reference/htmlsingle/#_concurrentmessagelistenercontainer

【讨论】:

  • 那么运行三个实例,即 Spring Boot 应用程序,一个 @KafkaListener 相当于运行一个这样的实例,同时 ConcurrentMessageListenerContainer 和并发设置为 3?
  • 是的,它是 3 个实例的 kafka 消费者组。
  • 究竟是什么原因'@KafkaListener(topics = "${message.topic.name}", group = "bar", containerFactory = "barKafkaListenerContainerFactory")' 用于定义组和容器工厂as done here.为什么不指定主题?
猜你喜欢
  • 2019-08-25
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
相关资源
最近更新 更多