バインダーの抽象化
Spring Cloud Stream は、Kafka [GitHub] (英語) および Rabbit MQ [GitHub] (英語) のバインダー実装を提供します。フレームワークには、spring-cloud-stream アプリケーションとしてのアプリケーションの統合テスト用のテストバインダーも含まれています。詳細については、【テスト】セクションを参照してください。
バインダーの抽象化もフレームワークの拡張ポイントの 1 つです。つまり、Spring Cloud Stream の上に独自のバインダーを実装できます。Spring Cloud Stream バインダーを最初から作成する方法 (英語) で、コミュニティメンバーのドキュメントを詳細に投稿します。例として、カスタムバインダーを実装するために必要な一連の手順を示します。手順は、Implementing Custom Binders セクションでも強調表示されています。
Spring Cloud Stream は構成に Spring Boot を使用し、バインダーの抽象化により、Spring Cloud Stream アプリケーションがミドルウェアに接続する方法に柔軟性を持たせることができます。例: デプロイヤーは、実行時に、外部宛先(Kafka トピックや RabbitMQ 交換など)とメッセージハンドラーの入力および出力(関数の入力パラメーターやその戻り引数など)の間のマッピングを動的に選択できます。このような構成は、外部構成プロパティを介して、Spring Boot でサポートされている任意の形式(アプリケーション引数、環境変数、application.yml または application.properties ファイルを含む)で提供できます。Spring Cloud Stream の導入セクションのシンクの例では、spring.cloud.stream.bindings.input.destination アプリケーションプロパティを raw-sensor-data に設定すると、raw-sensor-data Kafka トピックまたは raw-sensor-data RabbitMQ 交換にバインドされたキューから読み取られます。
Spring Cloud Stream は、クラスパスで見つかったバインダーを自動的に検出して使用します。同じコードでさまざまな型のミドルウェアを使用できます。これを行うには、ビルド時に別のバインダーを含めます。より複雑なユースケースの場合は、アプリケーションに複数のバインダーをパッケージ化して、実行時にバインダーを選択させることもできます(さらに、異なるバインディングに異なるバインダーを使用するかどうかも)。