Spring Cloud Stream Kafka消费者模式

Aja*_*jay 6 spring-cloud-stream

对于具有多个分区的主题-

1)一个SpringBoot实例是否使用多个线程来处理(用StreamListener注释的方法)每个分区中的每个消息?

2)是否可以为每个分区配置多个线程,还是我必须将其从侦听器线程手动移交给工作池?

Gar*_*ell 5

....consumer.concurrency 控制线程数(默认为 1)。

分区分布在线程中。如果您有 20 个分区和 4 个线程;他们每个人都会得到 5 个分区。

您需要拥有至少与所有实例的聚合并发数一样多的分区。(如果您有 2 个应用程序实例和 5 个线程,则至少需要 10 个分区)。

您不应该跨多个线程分发来自单个分区的消息;将在您移交给新线程后立即提交偏移量,这可能会导致消息丢失。

您应该总是在分区数量超过并发需求方面犯错。

  • 要添加到 Gary 的评论中,这里有一篇很好的文章,可以指导您完成大小调整过程。https://www.confluent.io/blog/how-to-choose-the-number-of-topicspartitions-in-a-kafka -簇/ (2认同)