2.2. 標準アドレス空間
標準アドレス空間は、AMQ Online のデフォルトのアドレス空間です。これは、取り付け可能なストレージユニットと組み合わせた AMQP ルーターネットワークで設定されます。クライアントは、1 つ以上のメッセージブローカーとの間でメッセージを転送するメッセージルーターに接続します。このアドレス空間タイプは、接続とアドレスが多数ある場合に適しています。ただし、標準アドレス空間には次の制限があります。
- XA トランザクションのサポート
- メッセージ順なし
- キューにセレクターなし
- キューのブラウズなし
- メッセージグループなし
クライアントは、AMQP または MQTT プロトコルを使用して、このアドレス空間に接続し、メッセージを送受信します。MQTT は qos2 または保持メッセージをサポートしていないことに注意してください。
2.2.1. 標準アドレスタイプ
標準アドレス空間は、次の異なるアドレスタイプを 5 つサポートしています。
- queue
- topic
- anycast
- multicast
- subscription
2.2.1.1. Queue
キューアドレスタイプは、ストアアンドフォワードキューです。このアドレスタイプは、分散ワークキューの実装、トラフィックバーストの処理、およびプロデューサーとコンシューマーを切り離す場合などのユースケースに適しています。キューは、複数のストレージユニット全体でシャード化できます。標準アドレス空間のキューでは、メッセージの順序が失われる可能性があります。
2.2.1.2. トピック
トピックアドレスタイプは、1..N のプロデューサーと 1..M のコンシューマーが存在するパブリッシュ/サブスクライブメッセージングパターンをサポートします。トピックアドレス対して発行された各メッセージは、そのアドレスの全サブスクライバーに転送されます。サブスクライバーは永続性がある場合があり、そのような場合には、メッセージはサブスクライバーが確認応答するまで保持されます。
トピックでサブスクリプションを作成する場合に、そのトピックへの送信者は トピック
ケイパビリティーを指定する必要があります。
2.2.1.2.1. 階層トピックとワイルドカード
トピックアドレスから受信するクライアントは、トピックアドレスをルートとしてワイルドカードアドレスを指定できます。ワイルドカードの動作は MQTT 構文に従います。
-
/
はセパレーターです。 -
+
はレベル 1 つと照合します。 -
#
1 つ以上のレベルで照合します。
たとえば、次のようになります。
-
a/#/b
ではa/foo/b
、a/bar/b
、およびa/foo/bar/b
がマッチします。 -
a/+/b
は、a/foo/b
とa/bar/b
がマッチしますが、a/foo/bar
はマッチしません。
標準アドレス空間では、最初のレベルは常に定義済みのトピックアドレスでなければなりません。つまり、#
と +
は、サブスクライブしたアドレスの最初の文字には使用できません。
2.2.1.2.2. 階層トピックでサブスクライバーを作成する際の既知の問題
AMQ Online で階層トピックにサブスクライバーを作成すると、ブローカーが代わりに競合するコンシューマーとしてサブスクライバーを作成するという既知の問題が存在します (トピックではなくキューのようにアドレスを処理します)。クライアントの特定の回避策の詳細は、アプリケーションの AMQ Online への接続 の該当するクライアントの例のセクションを参照してください。
2.2.1.3. anycast
anycast アドレスタイプは、メッセージを 1 つのコンシューマーに送信するためのスケーラブルな直接アドレスです。anycast アドレスに送信されたメッセージは保存されず、代わりにコンシューマーに直接転送されます。この方法により、このアドレスの種類は、要求応答 (RPC) の使用や作業の分散に適しています。これは永続性を必要としないため、最もコストがかからないアドレスタイプです。
2.2.1.4. Multicast
multicast アドレスタイプは、複数のコンシューマーにメッセージを送信するためのスケーラブルな直接アドレスです。multicast アドレスに送信されたメッセージは、そのアドレスでメッセージを受信するすべてのコンシューマーに転送されます。コンシューマーからのメッセージ受信確認はプロデューサーに伝播されないため、マルチキャストアドレスに送信できるのは事前に解決されたメッセージのみです。
2.2.1.5. Subscription
サブスクリプションアドレスタイプを使用すると、サブスクライバーがアタッチされていない場合でも、トピックに公開されたメッセージを保持するトピックに対してサブスクリプションを作成できます。コンシューマーは、アドレス構文 <topic-address>::<subscription-address> を使用してサブスクリプションにアクセスします。たとえば、トピック mytopic
のサブスクリプション mysub
の場合には、コンシューマーはアドレス mytopic::mysub
からサブスクリプションにアクセスします。デフォルト設定では、サブスクリプションごとにコンシューマー 1 つのみが使用できます。この設定は、サブスクリプションアドレスの maxConsumers
フィールドを編集することで変更できます。
maxConsumers
設定は、既存のサブスクリプションでは変更できません。