消费者组

虽然发布-订阅模型使得通过共享主题连接应用程序变得容易,但通过创建给定应用程序的多个实例来实现扩展同样重要。在这种情况下,应用程序的不同实例被置于竞争性消费者关系中,其中只有一个实例需要处理给定消息。

Spring Cloud Stream 通过消费者组(consumer group)的概念来模拟此行为。(Spring Cloud Stream 消费者组与 Kafka 消费者组类似并受其启发。)每个消费者绑定可以使用 spring.cloud.stream.bindings.<bindingName>.group 属性来指定一个组名。对于下图所示的消费者,此属性将设置为 spring.cloud.stream.bindings.<bindingName>.group=hdfsWritespring.cloud.stream.bindings.<bindingName>.group=average

SCSt groups
图 1. Spring Cloud Stream 消费者组

所有订阅给定目标(destination)的组都会接收到已发布数据的一个副本,但每个组中只有一个成员会从该目标接收到给定消息。默认情况下,未指定组时,Spring Cloud Stream 会将应用程序分配到一个匿名且独立的单成员消费者组,该组与所有其他消费者组处于发布-订阅关系中。