Anypoint MQ には、インテリジェントなメッセージルーティングルールを作成してエクスチェンジにパブリッシュされたメッセージのサブセットを特定のキューに転送する機能が含まれています。
メッセージルーティングルールはエクスチェンジに対するバインドで設定します。 メッセージをエクスチェンジにパブリッシュすると、ルールに一致するプロパティまたはヘッダーがメッセージに含まれている場合のみ、メッセージルーティングルールによってメッセージがキューに転送されます。
| メッセージルーティングルールが設定されていないバインドでは、引き続きエクスチェンジからすべてのメッセージが受信されます。 |
たとえば、中サイズの品目のすべての注文を処理するキューとプレミアム品目用の別のキューを指定する必要がある場合もあります。
エクスチェンジにパブリッシュされたメッセージを特定のキューに転送する手順は、次のとおりです。
-
エクスチェンジとキュー間のバインドに対するメッセージルーティングルールを定義します。
エクスチェンジに対するバインドごとに 1 つのメッセージルーティングルールを設定します。 Anypoint MQ では、設定されたメッセージルーティングルールは、パブリッシュされたメッセージのすべての
headers および properties 属性に対して評価されます。 -
メッセージで
properties と headers を定義して絞り込み条件を指定します。次のメッセージを
purchases エクスチェンジにパブリッシュすると、エクスチェンジはルーティングルール設定に基づいて premiumPurchases キューのみに転送し、sizeMedium キューには転送しません。{ "headers" : { "itemSize" : "large" }, "body" : "User added an item to the cart" }
メッセージルーティングルールを作成する
メッセージルーティングルールを作成する手順は、次のとおりです。
-
Anypoint Platform にログインします。
-
ナビゲーション領域または Anypoint Platform のメイン画面で [MQ] をクリックします。
-
[Destinations (宛先)] をクリックし、ルールを設定するエクスチェンジの名前をクリックします。
-
[Exchange Settings (エクスチェンジ設定)] ページで、[Add Rule (ルールを追加)] をクリックしてバインドされたキューにルールを追加します。
-
[Create Routing Rule (ルーティングルールを作成)] ページの項目に入力します。
-
プロパティ名と照合する値を指定します。
-
プロパティ種別ごとに、マッチャー種別を指定します。
-
-
[Add Rule (ルールを追加)] をクリックします。
メッセージルーティングルールを変更する
メッセージルーティングルールを変更する手順は、次のとおりです。
-
Anypoint Platform にログインします。
-
ナビゲーション領域または Anypoint Platform のメイン画面で [MQ] をクリックします。
-
[Destinations (宛先)] をクリックし、ルールを設定するエクスチェンジの名前をクリックします。
-
[Exchange Settings (エクスチェンジ設定)] ページで、[Edit Rule (ルールを編集)] をクリックしてバインドされたキューでルールを変更します。
-
[Edit Routing Rule (ルーティングルールを編集)] ページで、ルール設定を変更します。
プロパティ種別とマッチャー種別についての詳細は、「マッチャー種別」を参照してください。
-
[Save Rule (ルールを保存)] をクリックします。
メッセージルーティングルールを削除する
メッセージルーティングルールを削除する手順は、次のとおりです。
-
Anypoint Platform にログインします。
-
ナビゲーション領域または Anypoint Platform のメイン画面で [MQ] をクリックします。
-
[Destinations (宛先)] をクリックし、ルールを設定するエクスチェンジの名前をクリックします。
-
[Exchange Settings (エクスチェンジ設定)] ページで [Delete Rule (ルールを削除)] をクリックします。
-
[Delete Routing Rule (ルーティングルールを削除)] 確認ボックスで、チェックボックスをオンにして [Delete Routing Rule (ルーティングルールを削除)] をクリックし、ルールを削除することを確認します。
Anypoint Admin API を使用したメッセージルーティングルールの作成または変更
Anypoint MQ Admin API を使用したメッセージルーティングルールの管理についての詳細は、「Create or Change Message Routing Rules (メッセージルーティングルールの作成または変更)」を参照してください。
マッチャー種別
| プロパティ種別 | マッチャー種別 | 説明 |
|---|---|---|
String (文字列) |
Equals (等しい) |
メッセージプロパティ値がこのルールの値の完全一致である。 |
Prefix (プレフィックス) |
メッセージプロパティ値の先頭がこのルールの値である。 |
|
Any of (次のいずれかである) |
メッセージプロパティ値がこのルールの値のいずれかと一致する。 |
|
None of (次のいずれでもない) |
メッセージプロパティ値がこのルールの値のいずれにも一致しない。 |
|
Exists |
このルールに含まれるプロパティ名に一致する名前のプロパティがメッセージに含まれる。 |
|
Number (数値) |
Equals (等しい) |
メッセージプロパティ値がこのルールの値に等しい。 |
Less than (より小さい) |
メッセージプロパティ値がこのルールの値より小さい。 |
|
Less than or equal (以下) |
メッセージプロパティ値がこのルールの値以下である。 |
|
Greater than (より大きい) |
メッセージプロパティ値がこのルールの値より大きい。 |
|
Greater than or equal (以上) |
メッセージプロパティ値がこのルールの値以上である。 |
|
Range (範囲) |
メッセージプロパティ値がこのルールで指定された値の両端を含む範囲内にある。 |
|
None of (次のいずれでもない) |
メッセージプロパティ値がこのルールの値のいずれにも一致しない。 |
|
Exists |
このルールに含まれるプロパティ名に一致する名前のプロパティがメッセージに含まれる。 |
|
プロパティ値では、数値ピリオド値の小数点表記としてピリオド (.) 文字 (カンマ (,) 文字ではない) がサポートされます。 数値プロパティ値に基づくルーティングルールを作成し、Anypoint MQ Connector を使用してメッセージをパブリッシュする場合、Anypoint MQ Connector バージョン 3.2.0 以降にアップグレードする必要があります。 これより前のバージョンのコネクタでは、すべてのプロパティ値が文字列として送信されるため、メッセージは数値プロパティに基づくルーティングルールに一致しません。 |
ルーティングプロパティを使用したメッセージの送信
メッセージをエクスチェンジに送信して特定のキューに転送するには、次のいずれかを使用します。
-
Anypoint MQ の [Message Sender (メッセージ送信者)] ページ:
メッセージの送信時には、次の操作を実行します。
-
[Add User Properties (ユーザープロパティを追加)] を切り替えます。
-
送信するプロパティ名と値のペアとして検索条件を指定します。
詳細は、「メッセージエクスチェンジへのメッセージの送信」を参照してください。
-
-
Anypoint MQ Broker API:
パブリッシュされたメッセージでルーティングプロパティを表示する手順は、次のとおりです。
-
エクスチェンジの [Message Sender (メッセージ送信者)] ページで、エクスチェンジにバインドされているキューの [View Messages (メッセージを表示)] をクリックします。
Anypoint MQ に選択したキューの [Message Browser (メッセージブラウザー)] ページが表示されます。
-
[Get Messages (メッセージを取得)] をクリックします。
-
メッセージ行をクリックして、ユーザープロパティを含むメッセージペイロードを詳細ペインに表示します。
「キューからのメッセージの取得」を参照してください。
要件と制限事項
| 数値プロパティ値に基づくルーティングルールを作成し、Anypoint MQ Connector を使用してメッセージをパブリッシュする場合、Anypoint MQ Connector バージョン 3.2.0 以降にアップグレードする必要があります。 これより前のバージョンのコネクタでは、すべてのプロパティ値が文字列として送信されるため、メッセージは数値プロパティに基づくルーティングルールに一致しません。 |
Anypoint MQ ではメッセージルーティングルールをサポートしていますが、次の制限事項があります。
-
エクスチェンジのキューのバインドは 10 個以下である必要があります。
メッセージルーティングルールが定義されたエクスチェンジには、最大 10 件のキューをバインドできます。 エクスチェンジに 10 件を超えるキューのバインドがある場合、インテリジェントなメッセージルーティングは使用できません。
-
メッセージルーティングルールは 1 つのプロパティに対してのみ設定でき、次の制限事項があります。
-
プロパティ名の最大サイズは 180 バイトです。
-
プロパティ値の最大サイズは 45 KB です。
-
-
ルーティングルールのプロパティ値には空白、英数字 (a-z、A-Z、0-9)、句読点 (@ ! & | # $ % - _ : ; , . ') 文字を含めることができます。
Anypoint MQ では、次の条件を満たす場合のみルーティングルールに対してメッセージを評価します。
-
ヘッダーとプロパティの合計数が 500 個未満である。
この合計には、Anypoint MQ が作成する
messageId や createdTimestamp などの操作ヘッダーが含まれます。 -
ヘッダーとプロパティの最大合計サイズが 215 KB である。
メッセージがこれらの条件を満たさない場合、Anypoint MQ ではメッセージルーティングルールに対してメッセージを評価するときにヘッダーとプロパティを無視します。
Anypoint MQ ではペイロードでヘッダーとプロパティが保持され、メッセージをエクスチェンジにパブリッシュするときに、ヘッダーとプロパティを比較に使用できます。