配送ルートを変える
なんらかの要因でメッセージの配送ルートを変えたくなることがある。
バリデーション、テスト、デバッグ中にメッセージを配送するには?
コンポーネント間でやりとりされるメッセージをバリデートすることは、デバッグとしては非常に有用。 でも、おまけのステップはいつも必要なわけではないし、その間にシステムが重たくなるのも望まれてはいない。
設定に基づいてステップを増やしたり減らしたりできることは、デバッグやパフォーマンスチューニングのツールとしては非常によい。 テストでバリデーションのステップを増やせたり、製品版ではバイパスできたり。
トラブルシューティングでも同様。
コントロールバスによって制御されるコンテキストベースのルータで、迂回するよう構築する。 ある状態では追加のステップを経るが、他のステップでは目的のチャネルに直接メッセージを配信したりする。
迂回は二つの出力チャネルを持つ単純なコンテキストベースのルータを使用する。 一つは変更が加えられてないメッセージを本来の送信先へ出力するもので、Control Busによって、異なるチャネルに迂回する。 このチャネルはメッセージを調査したり修正したりといったおまけのコンポーネントにメッセージを送る。 最終的には、このルートも同じ送信先へメッセージを配送する。
もし迂回路が一つのコンポーネントだけを含んでいるのであれば、迂回スイッチとコンポーネントを単一のフィルタにまとめてしまったほうが効率が良い。 しかしながら、この解決策は迂回パスにあるコンポーネントがControl Busを通してバイパスされた処理を含むよう修正されることもある。
Control Busによる迂回の利点は、Publish-Subscribe Channelを使用したControl Busが単一のコマンドを 同時に発行することで、複数の迂回路を有効にしたり無効にしたりできるところ。