EIP / Ch7 Introduction


EIP

Introduction

一言要約

  • Simple Routers、Composed Routers、Architectural Patternsの3つにカテゴリ分けして用途によって、パターンを選定して使いましょう


要約

  • Chapter3では、Messaging Systemsで、Message Routerでメッセージの基を、メッセージの最終的な目的地から、切り離すか、について述べた。
  • このチャプターでは、ルーティングと統合ソリューションのための仲介能力の提供方法を説明するために、Message Routerの特定のタイプを仕上げる。
  • ほとんどのパターンは、他が、複数のMessage Routerと組み合わさってより複雑な問題を解決するためにMessage Routerパターンが洗練されたものである。

    メッセージのルーティングのパターンを、以下のグループにカテゴリ分けする。

  • SimpleRouters?
    • Message Router とは異なる。
    • 1つの入ってくるチャンネルから、1つもしく多くの出ていくチャンネルへ、メッセージの経路を決める。
  • Composed Routers
    • より多くの複雑なメッセージの流れを作るために複数のSimple Routersと組合わさっている。
  • Architectural Patterns
    • アーキテクチャの形式は、Message Routersに基づいている。


Simple Routers

  • Content-Based Routerは、メッセージの中身を調べ、メッセージの中身で他のチャンネルへの経路を決める。
  • このようなルータを使うことで、メッセージの作成者が、メッセージを1つのチャンネルに送ることが出来るようにして、適切な目的地への経路を決めるためにContet-Based Routerに任せている。
  • このことが、このタスクによる送信するアプリケーションを軽くして、メッセージの作成者と特定の目的地のチャンネルとの結びつきを避ける。

  • Message Filterは、Content-Based Routerの特別な形式である。
  • メッセージの中身を検査し、メッセージの中身がある基準と一致していれば、他のチャンネルにメッセージを通過させる。そうしないと、メッセージは破棄される。
  • Selective Consumerは、Message Endpointに組み込まれているが、 Message Filterは、適切なメッセージを他のチャンネルへと経路を決めているメッセージングシステムの一部であることが重要な違いで、Selective Consumerによく似た機能を実行する。

  • Content-Based Routerと、Message Filterは、似た問題を、実際に解決することができる。
  • Content-Based Routerが、Content-Based Routerでコード化した基準に基づいて、正しい目的地にメッセージの経路を決める。
  • Publish-Subcribe Channelと、潜在的な受け手も含めてMessage Filtersの配列を使うことによって、同じふるまいをさせることができる。
  • Message Filterは、特定の目的地のための基準に一致しないメッセージを削除する。
  • Content-Based Routerは、予測して1つのチャンネルに経路を決めることで、全てを制御する。しかし、このやり方は全ての可能性のある目的地のリストに依存することにもなる。
  • 対照的に、’’Message Filterはの配列は、能動的にフィルターをかけ、多くの’’Message Filtersを横断してルーティングのロジックを広げていくことになるが、全ての可能性のある目的地に依存する1つのコンポーネントをさけることになる。
  • Content-Based RouterMessage Filterのソリューションの間のトレードオフについては、Message Filterパターンで、より詳細に特徴を述べる。

  • 一般的なMessage Routerは、到着したメッセージの目的地を決定するために決められたルールを使う。
  • より柔軟さを必要とする場所は、Dynamic Routerはとても便利になる。
  • このルータは、設計された制御ポートに、制御メッセージを送ることによってルーティングロジックを修正することができる。
  • Dynamic Rouerの動的な性質は、Message Routerの多くの形式に組み合わせることができることである。

  • Chapter4Messaging Channelsでは、Point-to-Point ChannelPublish-Subscribe Channelのコンセプトを紹介した。
  • Recipent Listは、1つの受け手以上に対して、メッセージを送信する必要があるが、受け手を超えて制御を維持させる機能をもっている。
  • 要するに、Recipient Listは、1つの目的地のチャンネル以上に、1つのメッセージの経路を決めることができるContent-Based Routerである。

  • いくつかのメッセージには、個々の項目のリストを含んでいる。
  • どうこれらの項目を個別に処理するか。
  • 大きなメッセージを個々のメッセージに分割するために、Splitterを使用する。
  • 各メッセージは、次にさらに経路を決め、個別に処理することができる。

  • しかし、Splitterが1つのメッセージをもとに戻すのに作成されたメッセージを再び組み合わせる。
  • これは、Aggregatorの機能の1つである。
  • Aggregatorは、メッセージの流れを受け取ることができ、関連したメッセージを特定し、1つのメッセージを組み合わせることができる。
  • 他のルーティングとは違って、Aggregatorは、状態を把握したMessage Routerである。なぜかというと、特定の条件を満たすまで内部のメッセージを保持するからである。
  • このことは、メッセージが発行する前にAggregatorが、複数のメッセージを消費することができることを意味している。

  • 複数のメッセージは、並行で処理することができる。なぜかというと、アプリケーションもしくは複数のコンピューターで実行しているコンポーネントに接続するためにメッセージングを使用しているからである。
  • 例えば、1つ以上の処理が、1つのチャンネルでメッセージが消費されるかもしれない。
  • メッセージが異常に処理された理由で、これらの処理の1つは、他のものよりも早く実行されるかもしれない。
  • しかしながら、いつくかのコンポーネント(例えば、台帳ベースのシステム)は、個別のメッセージの正しい順序に依存している。
  • Resequencerは、順番異常 のメッセージを、順番に戻す。
  • Resequencerは、また状態を把握したMessage Routerである。なぜなら、多くのメッセージを、順番に完全に到着するまでメッセージを内部に保持するためである。
  • Aggregatorとは、違って、Resequencerは同一の消費された多くのメッセージを最終的に発行する。

  • 以下の表は、Message Routerの可変なプロパティを要約したものである。
    (分割の代替手段としてのDynamic Routerを含んでいない。理由は、いくつかのルータでは、動的な変数として実装することができるからである。)

Composed Routers

Pipes and Filtersの構造の主なメリットは、よりおおきなソリューションにおてい複数のフィルターを生成できることである。

  • Composed Message ProcessorScatter-Gatherは、複数のMessage Routerの違いを、より理解できるソリューションを作るために、組み合わせている。
  • パターンは、複数の情報源から情報を探すことと、1つのメッセージに再度組み合わせることの両方ができるようになる。
  • Scatter-Gatherが複数の受け手に同じメッセージのコピーを送る一方で、Composed Message Processorは、1つのメッセージを複数のパーツに分割する。

  • Composed Message ProcessorScatter-Gatherの両方とも、1つのメッセージを多くの参加者 に対して並行して経路を決め、そして、1つのメッセージの中で返信を再度、組み立てる。
  • Composed Message ProcessorScatter-Gatherは、メッセージのパラレルルーティングを管理するパターンと言っている。
  • 2つの追加のパターンは、メッセージを順番にルーティングの管理している、つまり、個々のステップの順序を通じてメッセージの経路を決めをしている。
  • もし主要なポイントからメッセージのパスを制御したいならば、使うべきメッセージのパスを特定するためにRouting Slipが使える。
  • このパターンは、ルーティングを、多くの受け手によって、順番に通過させるために、オフィスの書類を添付し、ルーティング間違いのような動作する。
  • もう1つの方法として、Process Managerを使用方法がある。これはより柔軟であるが、メッセージを各ファンクションの後に、中核となるコンポーネントに戻さなければならい

Architectural Patters

  • Message Routersは、中核となるMessage Brokerを利用する統合ソリューションを設計することができるようにしてくれている。
  • 異なるメッセージルーティングデザインパターンを反対するのは、このパターンがhub-and-spoke構造形式の特徴があるからである。

The Right Router for the Right Purpose

  • このチャプターでは、12パターンが含まれている。
  • どうやって、正しい目的のために、正しいパターンを探し出しやすくすることができるか?
  • 以下の決定表は、単純にYES、NOを決めるていくことで、正しい目的のために正しいパターンを探し出すのに役立つ。
  • 例えば、もし1回で1つのメッセージを消費するが、順番に複数のメッセージを発行する 単純なルーティングパターンを探しているのであれば、Splitterを使うべきである。
  • またこの図は、どのような近さで個々のパターンが関連しているかを解説するのに役立つ。
  • 例えば、Routig SlipProcess Managerは、似た問題を解決し、一方で、Message Filterは違いがある。


担当者のコメント

みんなの突っ込み

  • Process Managerっていかにもアーキテクチャパターンぽいのに、そうカテゴライズされてないのは、どうしてなんでしょう? (佐藤)