对于具有多个分区的主题 -
1) 单个 SpringBoot 实例是否使用多个线程来处理(用 StreamListener 注释的方法)来自每个分区的每条消息?
2) 是否可以为每个分区配置多个线程,或者我必须手动从我的监听器线程切换到工作池?
最佳答案
....consumer.concurrency
控制线程数(默认为 1)。
分区分布在线程中。如果您有 20 个分区和 4 个线程;他们每个人都会得到 5 个分区。
您需要拥有至少与所有实例的聚合并发数一样多的分区。 (如果您有 2 个应用程序实例和 5 个线程,则至少需要 10 个分区)。
您不应该跨多个线程分发来自单个分区的消息;将在您移交给新线程后立即提交偏移量,这可能会导致消息丢失。
您应该总是在分区数量超过并发需求方面犯错。
关于spring-cloud-stream - Spring Cloud Stream Kafka 消费者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42049042/