コンシューマーグループ

パブリッシュ / サブスクライブモデルを使用すると、共有トピックを介してアプリケーションを簡単に接続できますが、特定のアプリケーションの複数のインスタンスを作成してスケールアップする機能も同様に重要です。そうすると、アプリケーションのさまざまなインスタンスが競合するコンシューマー関連に配置され、インスタンスの 1 つだけが特定のメッセージを処理することが期待されます。

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 として設定されます。

SCSt groups
図 1: Spring Cloud Stream コンシューマーグループ

特定の宛先にサブスクライブするすべてのグループは、公開されたデータのコピーを受け取りますが、各グループの 1 人のメンバーだけがその宛先から特定のメッセージを受け取ります。デフォルトでは、グループが指定されていない場合、Spring Cloud Stream は、他のすべてのコンシューマーグループとパブリッシュ / サブスクライブ関連にある匿名の独立した単一メンバーのコンシューマーグループにアプリケーションを割り当てます。