首页 > 解决方案 > Spring Cloud Stream:spring.cloud.stream.default.consumer.concurrency 属性的确切含义

问题描述

我想知道使用 spring.cloud.stream.default.consumer.concurrency 属性时“并发”的确切含义。

文档(https://docs.spring.io/spring-cloud-stream/docs/Chelsea.RELEASE/reference/html/_configuration_options.html)说“入站消费者的并发性”,这可以用多种方式解释。

幕后创建了什么样的线程执行器?

谢谢!

标签: spring-cloud-stream

解决方案


并发的语义取决于实际的绑定器实现。例如,在 Kafka binder 的情况下,当您设置并发时,该值将传递给底层MessageListenerContainer. 假设您的消费者应用程序正在使用具有 3 个分区的主题,并且您将值设置concurrency为 3。这将由容器创建 3 个线程,每个线程都在处理来自该主题的单个分区(实际上,在Kafka binder 的情况下,将在幕后创建 3 个 listener 容器)。如果主题上的分区数多于并发线程数,则分区将分布在各个线程上。相同的语义也适用于 Rabbit binder,尽管它的实际实现可能在内部略有不同。


推荐阅读