EIP / Detour


Detour

ひとこと要約

配送ルートを変える

要約

なんらかの要因でメッセージの配送ルートを変えたくなることがある。

バリデーション、テスト、デバッグ中にメッセージを配送するには?

コンポーネント間でやりとりされるメッセージをバリデートすることは、デバッグとしては非常に有用。 でも、おまけのステップはいつも必要なわけではないし、その間にシステムが重たくなるのも望まれてはいない。

設定に基づいてステップを増やしたり減らしたりできることは、デバッグやパフォーマンスチューニングのツールとしては非常によい。 テストでバリデーションのステップを増やせたり、製品版ではバイパスできたり。

トラブルシューティングでも同様。

コントロールバスによって制御されるコンテキストベースのルータで、迂回するよう構築する。
ある状態では追加のステップを経るが、他のステップでは目的のチャネルに直接メッセージを配信したりする。

迂回は二つの出力チャネルを持つ単純なコンテキストベースのルータを使用する。 一つは変更が加えられてないメッセージを本来の送信先へ出力するもので、Control Busによって、異なるチャネルに迂回する。 このチャネルはメッセージを調査したり修正したりといったおまけのコンポーネントにメッセージを送る。 最終的には、このルートも同じ送信先へメッセージを配送する。

もし迂回路が一つのコンポーネントだけを含んでいるのであれば、迂回スイッチとコンポーネントを単一のフィルタにまとめてしまったほうが効率が良い。 しかしながら、この解決策は迂回パスにあるコンポーネントがControl Busを通してバイパスされた処理を含むよう修正されることもある。

Control Busによる迂回の利点は、Publish-Subscribe Channelを使用したControl Busが単一のコマンドを 同時に発行することで、複数の迂回路を有効にしたり無効にしたりできるところ。

担当者のつぶやき