エクスチェンジは、プロデューサーからメッセージを受信し、ルーティングルールに基づいて1つ以上のキューにルーティングします。各エクスチェンジタイプは異なるルーティング戦略を使用します。ダイレクトエクスチェンジはルーティングキーに正確に一致させ、ファンアウトエクスチェンジはすべてのバインドされたキューにブロードキャストします。一致するキューがない場合、エクスチェンジはメッセージを破棄します。
エクスチェンジの種類
ルーティングのニーズに合ったエクスチェンジタイプを選択してください。
タイプ | ルーティング動作 | 使用場面 |
direct | バインディングキーがメッセージルーティングキーに正確に一致するキューにメッセージをルーティングします。 | 専用の注文処理キューに |
topic | メッセージルーティングキーとバインディングパターン間のパターンマッチングに基づいて、キューにメッセージをルーティングします。ドット区切りのルーティングキーで |
|
fanout | ルーティングキーに関係なく、すべてのメッセージをすべてのバインドされたキューにルーティングします。 | 接続されたすべてのクライアントに通知をプッシュするなど、複数のコンシューマーにメッセージをブロードキャストする必要がある場合に使用します。 |
headers | ルーティングキーではなく、メッセージヘッダー属性に基づいてメッセージをルーティングします。バインディングで | 単一のルーティングキーではなく、複数の属性に基づいたルーティングが必要な場合に使用します。 |
x-delayed-message | メッセージをルーティングする前に、指定された期間保持します。 | イベント発生から30分後にリマインダー通知を送信するなど、メッセージ配信を遅延させる必要がある場合に使用します。 |
x-consistent-hash | ルーティングキーまたはヘッダー値に対して一貫したハッシュを使用してキューにメッセージをルーティングし、複数のキュー間で負荷分散を行います。 | 並列処理のために、一連のコンシューマーキュー全体で均等なメッセージ分散が必要な場合に使用します。 |
エクスチェンジの作成
前提条件
開始する前に、次のものがあることを確認してください。
ApsaraMQ for RabbitMQ インスタンス
エクスチェンジを作成する vhost
操作手順
ApsaraMQ for RabbitMQ コンソールにログインします。左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
上部のナビゲーションバーで、ご利用のインスタンスのリージョンを選択します。インスタンス名をクリックします。
左側のナビゲーションウィンドウで、[エクスチェンジ] をクリックします。
[エクスチェンジ] ページで、[変更] ボタンを [vhost] の横でクリックします。ドロップダウンリストから、対象の vhost を選択します。次に、[エクスチェンジの作成] をクリックします。
[エクスチェンジの作成] パネルで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
Exchange Name
エクスチェンジ名。
amq.プレフィックスは予約済みであり、使用できません。たとえば、amq.testは有効な名前ではありません。Type
エクスチェンジタイプ。
x-delayed-type
[タイプ] が
x-delayed-messageに設定されている場合に必須です。基盤となるルーティング戦略(direct、topic、fanout、headers、または x-jms-topic)を指定します。Hash value
[タイプ] が
x-consistent-hashに設定されている場合に指定が必要です。ハッシュ入力ソースを指定します:[ルーティングキー] または [ヘッダー値]。hash-header
「[ハッシュ値]」が「[ヘッダー値]」に設定されている場合に必須です。ハッシュ入力として使用するヘッダー キーを指定します。
Internal
エクスチェンジが内部かどうかを指定します。デフォルト: [いいえ]。[はい] に設定すると、他のエクスチェンジからのみメッセージを受信する内部エクスチェンジを作成します(プロデューサーから直接は受信しません)。[いいえ] に設定すると、キューにバインドされる標準的なエクスチェンジになります。
エクスチェンジをキューにバインドする
エクスチェンジをキューにバインドして、エクスチェンジがメッセージをルーティングする場所を定義します。
[エクスチェンジ] ページで、対象のエクスチェンジを探し、[操作] 列の [ソースとしてバインド] をクリックします。
[Exchange 詳細] ページの [ソースとしてバインド] タブで、[バインディングの追加] をクリックします。
「[バインディングの追加]」パネルで、「[バインド先の種類]」を「[キュー]」に設定し、「[バインド先]」ドロップダウンリストからキューを選択し、「[ルーティングキー]」を設定して、「[OK]」をクリックします。
x-consistent-hash 交換では、[ルーティングキー] の値がキューの重み(1 から 20 の整数)を指定します。重みを変更するには、既存のバインディングを削除して、新しいバインディングを作成します。
エクスチェンジが同じキューに複数回バインドされている場合、最初に一致するバインディングのみが有効になります。
エクスチェンジを別のエクスチェンジにバインドする
メッセージを別のエクスチェンジに転送する (ソースバインディング)
現在のエクスチェンジをソースとして設定し、ルーティングルールに基づいてメッセージをダウンストリームエクスチェンジに転送します。
「エクスチェンジ」ページで、該当するエクスチェンジを見つけ、[操作] 列の [ソースとしてバインド] をクリックします。
「ソースとしてバインド済み」タブで、「バインディングの追加」をクリックします。
「[バインディングの追加]」パネルで、「[バインド先のタイプ]」を「[Exchange]」に設定し、「[バインド先]」ドロップダウン リストから送信先 Exchange を選択し、「[ルーティング キー]」を設定して、「[OK]」をクリックします。
別のエクスチェンジからメッセージを受信する (送信先バインディング)
現在のエクスチェンジを送信先として設定し、アップストリームエクスチェンジからメッセージを受信します。
[取引所]ページで取引所を見つけ、[詳細]を[操作]列でクリックします。
[エクスチェンジ詳細] ページで、[宛先としてバインド済み] タブをクリックします。[バインディングの追加] をクリックします。
「[バインディングの追加]」パネルで、「[ソース Exchange]」ドロップダウンリストからソース Exchange を選択し、ルーティングキーを入力し、「[バインド先のタイプ]」および「[デスティネーション Exchange]」のデフォルト値のままにして、「[OK]」をクリックします。
メッセージの送信
エクスチェンジをバインドした後、ApsaraMQ for RabbitMQ コンソールで、エクスチェンジからバインドされたキューにメッセージを送信したり、送信先エクスチェンジからソースエクスチェンジにメッセージを送信したりできます。
[取引所] ページで、取引所を見つけ、[操作] 列の [詳細] をクリックします。
「取引の詳細」ページの右上隅で、「メッセージを送信」をクリックします。
「メッセージ送信」パネルで、「ルーティングキー」を入力し、「必須」(true または false)の値を選択し、「メッセージ ID」と「メッセージ本文」を入力してから、「OK」をクリックします。
エクスチェンジ統計の表示
エクスチェンジメトリックを表示して、メッセージルーティングを監視し、問題を特定します。
[エクスチェンジ]ページでエクスチェンジを見つけ、[詳細]を[操作]列でクリックします。
[エクスチェンジ詳細] ページで、[ダッシュボード] タブをクリックします。
利用可能なメトリックは、ご利用のインスタンスエディションによって異なります。
インスタンスエディション | 監視ソース | 詳細 |
Enterprise Edition、Enterprise Platinum Edition | Managed Service for Prometheus および Managed Service for Grafana | 「ダッシュボード」をご参照ください。 |
Professional Edition、Standard Edition | CloudMonitor | 詳細については、「モニタリングとアラート機能」をご参照ください。 |
Standard Edition インスタンスは購入できなくなりました。既存の Standard Edition インスタンスは引き続き機能します。
エクスチェンジの削除
エクスチェンジを削除すると、プロデューサーはエクスチェンジにメッセージを送信できなくなり、エクスチェンジは1つ以上のキューにメッセージをルーティングしたり、メッセージを破棄したりできなくなります。注意して進めてください。
headersタイプのエクスチェンジは削除できません。組み込みの vhost エクスチェンジ (
amq.direct、amq.topic、amq.fanout、amq.headers、およびamq.match) は削除できません。
[取引所] ページで、削除する取引所の名前をクリックしてください。
[エクスチェンジ詳細]ページの右上隅で、[削除]をクリックします。
[Note] 確認ダイアログで、[OK] をクリックします。
参考資料
エクスチェンジの概念とアーキテクチャの詳細については、「エクスチェンジ」をご参照ください。