メッセージングシステムが持つ複数のコンポーネントを透過的に管理および監視を行う。
当然ながら、エンタープライズ統合システムは分散されている。実際、エンタープライズメッセージングシステムの性質を決定する要因の一つは異なるシステム間の通信を可能にすることである。メッセージングシステムは情報をルーティングし転送できるようにするので、データはこれらのシステム間を交換可能にする。ほとんどの場合、これらのアプリケーションは複数のネットワーク、建物、都市や大陸をまたがって広がっている。
複数のプラットフォームや広い地理的エリアにわたって分散されるメッセージングシステムを効率的に管理するにはどうすればよいか?
分散し疎結合のアーキテクチャは柔軟性や拡張性を可能にする。同時に、そのようなシステムを制御するための深刻な課題も提起してくれる。例えば、全コンポーネントが正常に動いているかをどうやって見分ければよいか?プロセスは多数のマシンに分散されているため、単純にプロセス状態を確認することは十分ではない。また、リモートマシンから状態を取得出来ない場合、それはそのマシンは動いてないかそのマシンとの通信が妨害されているのか?
システムまたはコンポーネントが稼動しているかを知るには、システムの動的な振る舞いを監視する必要がある。メッセージのスループットは?異常な遅延はないか?チャネルがいっぱいになってないか?この情報の一部はコンポーネント間またはコンポーネントを通じたメッセージの移動時間を追跡する必要がある。これは、複数のマシンから情報の収集および組み合わせが必要になる。
また、コンポーネントから情報を読むだけでは十分ではない場合がある。システム稼働中に設定を調整または変更する必要がしばしばある。例えば、システム稼働中にロギング機能をON/OFFする必要があるかもしれない。多くのアプリケーションは設定情報を読んでエラー状態をレポートするためにプロパティファイルやエラーログを使用する。このアプローチは単一のマシンまたは少数のマシンで構成しているアプリケーションにて上手くいきやすい。大規模で分散されたソリューションでは、プロパティファイルはファイル転送メカニズムを用いてリモートマシンにコピーしなければならなく、全マシンが離れてアクセスできるファイルシステムを必要とする。これはセキュリティ上のリスクをもたらし、もしマシンがインターネットまたはファイルマッピングプロトコルをサポートしていない広域ネットワークに繋がっている場合は難しい。また、ローカルのプロパティファイルのバージョンは注意して管理しなければならない(管理の悪夢が待っている)。
これらのタスクを実行するためにメッセージングシステムインフラストラクチャを活用しようとするのはごく自然なことである。例えば、設定を変更するためにコンポーネントにメッセージを送信できる。この制御メッセージは通常のメッセージと同様に転送、ルーティングされる。これは通信の問題をほとんど解決するが、新たな課題を引き起こす。設定メッセージは通常のアプリケーションメッセージより厳しいセキュリティポリシーの対象にすべきである。例えば、誤ったフォーマットの制御メッセージは簡単にコンポーネントをダウンさせる可能性がある。また、コンポーネントが故障しているのでもしメッセージチャネル上にキューがあればどうなるか?コンポーネントをリセットするために制御メッセージを送信したら、この制御メッセージは他の全メッセージとともにキューに入れられコンポーネントに到達しないだろう。一部のメッセージングシステムはメッセージの優先順位をサポートしており、キューの先頭に制御メッセージを移動させることができる。しかしながら、全てのシステムがこの機能を提供しているわけではなく、もしキューが満杯で他のメッセージを受け付けない場合は優先順位は役に立たない。同様に、制御メッセージのいくつかはアプリケーションメッセージより優先順位は低い。もし定期的なステータスメッセージを公開しているコンポーネントを持っている場合、「生きてるよ」制御メッセージが遅延したり失ったりすることで手間や「100万ドルの注文」メッセージの遅延や損失をずっと少なくさせる。
Control Busをつかってエンタープライズ統合システムを管理する。Control Busはアプリケーションデータによって使われるのと同じメッセージングシステムを利用するが、メッセージフロー内に含まれるコンポーネント管理に関連するデータを転送するために異なるチャネルを用いる。
システム内の各コンポーネントは2つのメッセージングサブシステムに繋がれている。
Control Busは次のような種類のメッセージを運ぶのに適している。
Control Busがサポートしている機能の多くは、任意のネットワークに繋がれているソリューションを監視および維持するために使われる従来のネットワーク管理機能に似ている。Control Busはメッセージングシステムレベル(低レベルのIPネットワークレベルからリッチなメッセージングレベルに本質的に引き上げて)にて同等の管理機能を実装している。この機能を提供することはメッセージングインフラストラクチャの正常動作に不可欠だが、メッセージングソリューションの管理基準が存在しないと、企業全体レベルのメッセージングシステムの再利用可能な管理ソリューションを構築することは困難になる。
メッセージ処理コンポーネントを設計する際、コアプロセッサと周りにある3つのインターフェースを設ける。インバウンドデータインターフェースはメッセージチャネルからメッセージを受信する。アウトバンドデータインターフェースはoutboundチャネルに処理されたメッセージを送信する。制御インターフェースはControl Busから(へ)制御メッセージを送受信する。
メッセージコンポーネントの主要インターフェース
例:ローンブローカーの測定
この章の終わりに、Control Busを使ってローンブローカーの非同期MSMQ実装を測定する方法について示す。この実装は、リアルタイムにコンポーネントの状態を表示するシンプルな管理コンソールを含んでいる(Loan Broker System Management参照)。
関連パターン:Asynchronous Implementation with MSMQ、Content-Based Router、Loan Broker System Management、Test Message