Spring Cloud Stream Kafka 消费者模式
Spring Cloud Stream Kafka consumer patterns
对于具有多个分区的主题 -
1)单个SpringBoot实例是否使用多个线程来处理(使用StreamListener注解的方法)来自每个分区的每个消息?
2) 是否可以为每个分区配置多个线程,或者我必须手动将其从侦听器线程移交给工作池?
....consumer.concurrency
控制线程数(默认1)。
分区分布在线程中。如果你有 20 个分区和 4 个线程;他们每个人将获得 5 个分区。
您需要至少拥有与所有实例的聚合并发数一样多的分区。 (如果您有 2 个应用实例和每个应用实例 5 个线程,则至少需要 10 个分区)。
您不应将来自单个分区的消息分布到多个线程;偏移量将在您移交给新线程后立即提交,这可能会导致消息丢失。
如果分区数多于并发性需求,您应该永远犯错。
对于具有多个分区的主题 -
1)单个SpringBoot实例是否使用多个线程来处理(使用StreamListener注解的方法)来自每个分区的每个消息?
2) 是否可以为每个分区配置多个线程,或者我必须手动将其从侦听器线程移交给工作池?
....consumer.concurrency
控制线程数(默认1)。
分区分布在线程中。如果你有 20 个分区和 4 个线程;他们每个人将获得 5 个分区。
您需要至少拥有与所有实例的聚合并发数一样多的分区。 (如果您有 2 个应用实例和每个应用实例 5 个线程,则至少需要 10 个分区)。
您不应将来自单个分区的消息分布到多个线程;偏移量将在您移交给新线程后立即提交,这可能会导致消息丢失。
如果分区数多于并发性需求,您应该永远犯错。