パラレルのルーティング・ルールの基本原則
メディエータは、次の原則に基づいてルーティング・ルールをパラレルで処理します。
-
メディエータは、ルーティングをキューに入れ、別々のスレッドでパラレルに評価します。
各メディエータ・サービス・コンポーネントのメッセージは、重み付けラウンド・ロビン方式で取得され、すべてのメディエータ・サービス・コンポーネントで確実にパラレル処理サイクルが受け入れられます。これは、1つ以上のメディエータ・サービス・コンポーネントで、他のコンポーネントよりも多くのメッセージが生成される場合でも同様です。使用される重み付けは、メディエータ・サービス・コンポーネントの設計時に設定されたメッセージ優先度です。メッセージ優先度の高いコンポーネントほど、多数のパラレル処理サイクルが割り当てられます。
メディエータ・サービス・コンポーネントの優先度を指定するには、メディエータ・エディタで「優先度」フィールドを設定します。優先度は0から9までの範囲で、9が最高優先度です。デフォルトの優先度は4です。
ノート:
「優先度」プロパティの適用対象は、パラレルのルーティング・ルールのみです。
-
メディエータは、各パラレル・ルールを処理するための新規トランザクションを開始します。開始されたトランザクションは、メディエータのパラレル・メッセージ・デハイドレーション・ストアへのエンキューで終了します。
たとえば、メディエータ・サービス・コンポーネントにパラレルのルーティング・ルールが1つある場合は、1つのメッセージがメディエータのパラレル・メッセージ・デハイドレーション・ストアにエンキューされます。次に、ストアに対するパラレル・メッセージ・ディスパッチャがトランザクションを開始し、データベース・ストアからメッセージを読み取り、このルーティング・ルールのターゲット・コンポーネントまたはサービスを起動します。リスナー・スレッドによって開始されるトランザクションは、完全に新規のトランザクションであり、ターゲット・コンポーネントに伝播されます。
ノート:
メッセージのデハイドレーションでは、パラレル・ルーティング・ルール対象の受信メッセージがデータベースに格納されるため、ワーカー・スレッドはそれらのメッセージを後で処理できます。
-
メディエータはトランザクションのイニシエータであるため、これらのトランザクションをコミットまたはロールバックします。