---
schema_version: "1"
id: 541c1cf32448d4aee6fc0d49a29a7a491747e8a3a374a24dccfbad3cf2803ed4
title: メッセージエクスチェンジに対するルールを設定することによるメッセージの転送
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/mq/mq-routing-rules.md
canonical_url: https://docs.mulesoft.com/jp/mq/mq-routing-rules
source_site: docs.mulesoft.com
content_type: documentation
content_hash: fafba16824a16a7ffd261d04a428bba0d35a7e01eb91c8e3167c48d14f41966a
description: MuleSoft Documentation Site
latest: true
---
# メッセージエクスチェンジに対するルールを設定することによるメッセージの転送

Anypoint MQ には、​_インテリジェントなメッセージルーティングルール_​を作成してエクスチェンジにパブリッシュされたメッセージのサブセットを特定のキューに転送する機能が含まれています。

メッセージルーティングルールはエクスチェンジに対するバインドで設定します。 メッセージをエクスチェンジにパブリッシュすると、ルールに一致するプロパティまたはヘッダーがメッセージに含まれている場合のみ、メッセージルーティングルールによってメッセージがキューに転送されます。

<table><tbody><tr><td class="icon"><i class="fa icon-note" title="Note"></i></td><td class="content">メッセージルーティングルールが設定されていないバインドでは、引き続きエクスチェンジからすべてのメッセージが受信されます。</td></tr></tbody></table>

![エクスチェンジのバインドに対するルーティングルール](/mulesoft/current/ja-jp/mq/_images/mq-route-message.png)

たとえば、中サイズの品目のすべての注文を処理するキューとプレミアム品目用の別のキューを指定する必要がある場合もあります。

エクスチェンジにパブリッシュされたメッセージを特定のキューに転送する手順は、次のとおりです。

1. エクスチェンジとキュー間のバインドに対するメッセージルーティングルールを定義します。
    
    エクスチェンジに対するバインドごとに 1 つのメッセージルーティングルールを設定します。 Anypoint MQ では、設定されたメッセージルーティングルールは、パブリッシュされたメッセージのすべての ​`headers`​ および ​`properties`​ 属性に対して評価されます。
2. メッセージで ​`properties`​ と ​`headers`​ を定義して絞り込み条件を指定します。
    
    次のメッセージを ​`purchases`​ エクスチェンジにパブリッシュすると、エクスチェンジはルーティングルール設定に基づいて ​`premiumPurchases`​ キューのみに転送し、​`sizeMedium`​ キューには転送しません。
    
    ```json
    {
        "headers" : {
            "itemSize" : "large"
        },
        "body" : "User added an item to the cart"
    }
    ```

## [](#メッセージルーティングルールを作成する)メッセージルーティングルールを作成する

メッセージルーティングルールを作成する手順は、次のとおりです。

1. Anypoint Platform にログインします。
2. ナビゲーション領域または Anypoint Platform のメイン画面で ​**\[MQ\]**​ をクリックします。
3. **\[Destinations (宛先)\]**​ をクリックし、ルールを設定するエクスチェンジの名前をクリックします。
4. **\[Exchange Settings (エクスチェンジ設定)\]**​ ページで、​**\[Add Rule (ルールを追加)\]**​ をクリックしてバインドされたキューにルールを追加します。
    
    ![\[Exchange Settings (エクスチェンジ設定)\] ページの \[Add Rule (ルールを追加)\] ボタン](_images/mq-exchange-add-rule-bound-queues.png)
5. **\[Create Routing Rule (ルーティングルールを作成)\]**​ ページの項目に入力します。
    
    ![\[Create Routing Rule (ルーティングルールを作成)\] ページ](_images/mq-exchange-create-routing-rule.png)
    
    - プロパティ名と照合する値を指定します。
    - プロパティ種別ごとに、​[マッチャー種別](#matcher-type)​を指定します。
6. **\[Add Rule (ルールを追加)\]**​ をクリックします。

## [](#メッセージルーティングルールを変更する)メッセージルーティングルールを変更する

メッセージルーティングルールを変更する手順は、次のとおりです。

1. Anypoint Platform にログインします。
2. ナビゲーション領域または Anypoint Platform のメイン画面で ​**\[MQ\]**​ をクリックします。
3. **\[Destinations (宛先)\]**​ をクリックし、ルールを設定するエクスチェンジの名前をクリックします。
4. **\[Exchange Settings (エクスチェンジ設定)\]**​ ページで、​**\[Edit Rule (ルールを編集)\]**​ をクリックしてバインドされたキューでルールを変更します。
    
    ![\[Exchange Settings (エクスチェンジ設定)\] ページの \[Edit Rule (ルールを編集)\] ボタン](_images/mq-exchange-edit-rule-bound-queues.png)
5. **\[Edit Routing Rule (ルーティングルールを編集)\]**​ ページで、ルール設定を変更します。
    
    プロパティ種別とマッチャー種別についての詳細は、「​[マッチャー種別](#matcher-type)​」を参照してください。
6. **\[Save Rule (ルールを保存)\]**​ をクリックします。

## [](#メッセージルーティングルールを削除する)メッセージルーティングルールを削除する

メッセージルーティングルールを削除する手順は、次のとおりです。

1. Anypoint Platform にログインします。
2. ナビゲーション領域または Anypoint Platform のメイン画面で ​**\[MQ\]**​ をクリックします。
3. **\[Destinations (宛先)\]**​ をクリックし、ルールを設定するエクスチェンジの名前をクリックします。
4. **\[Exchange Settings (エクスチェンジ設定)\]**​ ページで ​**\[Delete Rule (ルールを削除)\]**​ をクリックします。
    
    ![\[Exchange Settings (エクスチェンジ設定)\] ページの \[Delete Rule (ルールを削除)\] ボタン](_images/mq-exchange-delete-rule-bound-queues.png)
5. **\[Delete Routing Rule (ルーティングルールを削除)\]**​ 確認ボックスで、チェックボックスをオンにして ​**\[Delete Routing Rule (ルーティングルールを削除)\]**​ をクリックし、ルールを削除することを確認します。

## [](#anypoint-admin-api-を使用したメッセージルーティングルールの作成または変更)Anypoint Admin API を使用したメッセージルーティングルールの作成または変更

Anypoint MQ Admin API を使用したメッセージルーティングルールの管理についての詳細は、​[「Create or Change Message Routing Rules (メッセージルーティングルールの作成または変更)」](https://docs.mulesoft.com/jp/mq/mq-apis#routing-rules-api)​を参照してください。

### [](#matcher-type)マッチャー種別

<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 11.1111%;">
<col style="width: 22.2222%;">
<col style="width: 66.6667%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">プロパティ種別</th>
<th class="tableblock halign-left valign-top">マッチャー種別</th>
<th class="tableblock halign-left valign-top">説明</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top" rowspan="5"><div class="content"><div class="paragraph">
<p>String (文字列)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Equals (等しい)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値がこのルールの値の完全一致である。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Prefix (プレフィックス)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値の先頭がこのルールの値である。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Any of (次のいずれかである)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値がこのルールの値のいずれかと一致する。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None of (次のいずれでもない)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値がこのルールの値のいずれにも一致しない。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Exists</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>このルールに含まれるプロパティ名に一致する名前のプロパティがメッセージに含まれる。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top" rowspan="8"><div class="content"><div class="paragraph">
<p>Number (数値)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Equals (等しい)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値がこのルールの値に等しい。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Less than (より小さい)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値がこのルールの値より小さい。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Less than or equal (以下)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値がこのルールの値以下である。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Greater than (より大きい)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値がこのルールの値より大きい。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Greater than or equal (以上)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値がこのルールの値以上である。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Range (範囲)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値がこのルールで指定された値の両端を含む範囲内にある。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>None of (次のいずれでもない)</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>メッセージプロパティ値がこのルールの値のいずれにも一致しない。</p>
</div></div></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>Exists</p>
</div></div></td>
<td class="tableblock halign-left valign-top"><div class="content"><div class="paragraph">
<p>このルールに含まれるプロパティ名に一致する名前のプロパティがメッセージに含まれる。</p>
</div></div></td>
</tr>
</tbody>
</table>

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
<div class="paragraph">
<p>プロパティ値では、数値ピリオド値の小数点表記としてピリオド (.) 文字 (カンマ (,) 文字ではない) がサポートされます。</p>
</div>
<div class="paragraph">
<p>数値プロパティ値に基づくルーティングルールを作成し、Anypoint MQ Connector を使用してメッセージをパブリッシュする場合、Anypoint MQ Connector バージョン 3.2.0 以降にアップグレードする必要があります。
これより前のバージョンのコネクタでは、すべてのプロパティ値が文字列として送信されるため、メッセージは数値プロパティに基づくルーティングルールに一致しません。</p>
</div>
</td>
</tr>
</tbody></table>

## [](#send-message-with-routing-props)ルーティングプロパティを使用したメッセージの送信

メッセージをエクスチェンジに送信して特定のキューに転送するには、次のいずれかを使用します。

- Anypoint MQ の ​**\[Message Sender (メッセージ送信者)\]**​ ページ:
    
    メッセージの送信時には、次の操作を実行します。
    
    1. **\[Add User Properties (ユーザープロパティを追加)\]**​ を切り替えます。
    2. 送信するプロパティ名と値のペアとして検索条件を指定します。
    
    詳細は、​[「メッセージエクスチェンジへのメッセージの送信」](https://docs.mulesoft.com/jp/mq/mq-exchanges#send-a-message-to-a-message-exchange)​を参照してください。
- Anypoint MQ Broker API:
    
    詳細は、​[「Send a Message with Routing Properties (ルーティングプロパティを使用したメッセージの送信)」](https://docs.mulesoft.com/jp/mq/mq-apis#send-message-routing)​を参照してください。

パブリッシュされたメッセージでルーティングプロパティを表示する手順は、次のとおりです。

1. エクスチェンジの ​**\[Message Sender (メッセージ送信者)\]**​ ページで、エクスチェンジにバインドされているキューの ​**\[View Messages (メッセージを表示)\]**​ をクリックします。
    
    Anypoint MQ に選択したキューの ​**\[Message Browser (メッセージブラウザー)\]**​ ページが表示されます。
2. **\[Get Messages (メッセージを取得)\]**​ をクリックします。
3. メッセージ行をクリックして、ユーザープロパティを含むメッセージペイロードを詳細ペインに表示します。
    
    ![\[Message Browser (メッセージブラウザー)\] ページでのユーザープロパティの表示](_images/mq-exchange-user-props.png)
    
    [「キューからのメッセージの取得」](https://docs.mulesoft.com/jp/mq/mq-queues#get-a-message-from-a-queue)​を参照してください。

## [](#intelligent-routing-restrictions)要件と制限事項

<table><tbody><tr><td class="icon"><i class="fa icon-important" title="Important"></i></td><td class="content">数値プロパティ値に基づくルーティングルールを作成し、Anypoint MQ Connector を使用してメッセージをパブリッシュする場合、Anypoint MQ Connector バージョン 3.2.0 以降にアップグレードする必要があります。 これより前のバージョンのコネクタでは、すべてのプロパティ値が文字列として送信されるため、メッセージは数値プロパティに基づくルーティングルールに一致しません。</td></tr></tbody></table>

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 ではペイロードでヘッダーとプロパティが保持され、メッセージをエクスチェンジにパブリッシュするときに、ヘッダーとプロパティを比較に使用できます。

## [](#関連情報)関連情報

- [メッセージルーティングルールの作成](https://docs.mulesoft.com/jp/mq/mq-apis#routing-rules-api)
- [ルーティングプロパティを使用したメッセージの送信](https://docs.mulesoft.com/jp/mq/mq-apis#send-message-routing)