消费者组
虽然发布-订阅模型使通过共享主题连接应用程序变得容易,但通过创建给定应用程序的多个实例来扩展应用程序的能力同样重要。这样做时,应用程序的不同实例将处于竞争性消费者的关系中,其中只有一个实例有望处理给定的消息。
Spring Cloud Stream 通过消费者组的概念来模拟这种行为。(Spring Cloud Stream 消费者组类似于并受到 Kafka 消费者组的启发。)每个消费者绑定可以使用`spring.cloud.stream.bindings.<bindingName>.group`属性来指定组名。对于下图中显示的消费者,此属性将设置为`spring.cloud.stream.bindings.<bindingName>.group=hdfsWrite`或`spring.cloud.stream.bindings.<bindingName>.group=average`。
图 1. Spring Cloud Stream 消费者组
订阅给定目标的所有组都会收到已发布数据的副本,但每个组中只有一个成员会从该目标接收给定的消息。默认情况下,当未指定组时,Spring Cloud Stream 会将应用程序分配给匿名且独立的单成员消费者组,该组与所有其他消费者组处于发布-订阅关系。