4.2. アドレスセットへのアドレス設定の適用
AMQ Broker では、ワイルドカード式を使用して一致するアドレス名を表すことで、address-setting
要素に指定された設定をアドレスセットに適用することができます。
以下のセクションでは、ワイルドカード式の使用方法を説明します。
4.2.1. AMQ Broker ワイルドカード構文
AMQ Broker は、アドレス設定でワイルドカードを表す特定の構文を使用します。ワイルドカードは、セキュリティー設定やコンシューマーの作成時に使用することもできます。
-
ワイルドカード式には、ピリオド (
.
) で区切られた単語が含まれます。 数字記号 (
#
) およびアスタリスク (*
) 文字には特別な意味があり、以下のように単語の代わりに使用できます。- 数字記号は、"ゼロ以上の単語のシーケンスの一致" を意味します。式の最後に使用します。
- アスタリスク文字は、"単一の単語の一致" を意味します。式内のどこかにこの変数を使用します。
マッチングは文字による文字は実行されませんが、各区切り文字境界では文字ごとに一致します。たとえば、名前に my
を持つキューと一致するよう設定された address-setting
要素は、myqueue
という名前のキューと 一致しません。
複数の address-setting
要素がアドレスと一致する場合、ブローカーオーバーレイ設定は、ベースラインとして最も具体的な一致の設定を使用します。リテラル式はワイルドカードより固有で、アスタリスク (*
) は数値記号 (#
) より具体的なものです。たとえば、my.destination
と my.*
の両方がアドレス my.destination
と一致します。この場合、ワイルドカード式はリテラルよりも具体的なため、ブローカーは最初に my.*
にある設定を適用します。次に、ブローカーは my.destination
アドレス設定要素の設定をオーバーレイし、my.*
と共有される設定を上書きします。たとえば、以下の設定では、my .destination
に関連付けられたキューは max-delivery-attempts
を 3
に設定し、last-value-queue
を false
に設定します。
<address-setting match="my.*"> <max-delivery-attempts>3</max-delivery-attempts> <last-value-queue>true</last-value-queue> </address-setting> <address-setting match="my.destination"> <last-value-queue>false</last-value-queue> </address-setting>
以下の表に示す例は、ワイルドカードを使用してアドレスセットを照合する方法を示しています。
例 | 説明 |
---|---|
|
|
|
|
|
|
|
|
4.2.2. リテラル一致の設定
リテラル一致では、ワイルドカード文字はリテラル文字として扱われ、ワイルドカードを含むアドレスと一致します。たとえば、リテラル一致のハッシュ (#) 文字は、orders.#
というアドレスと一致します。orders.retail
や orders.wholesale
などのアドレスとは一致しません。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 リテラル一致を設定する前に、
literal-match-markers
パラメーターを使用して、リテラル一致を区切る文字を定義します。次の例では、括弧を使用してリテラル一致を区切ります。<core> ... <literal-match-markers>()</literal-match-markers> ... </core>
リテラル一致を区切るマーカーを定義した後、
address setting match
パラメーターで、マーカーを含む一致を指定します。次の例では、orders.#
というアドレスのリテラル一致を設定して、このアドレスのメトリクスを有効にします。<address-settings> <address-setting match="(orders.#)"> <enable-metrics>true</enable-metrics> </address-setting> </address-settings>
4.2.3. ブローカーのワイルドカード構文の設定
以下の手順では、ワイルドカードアドレスに使用される構文をカスタマイズする方法を説明します。
手順
-
<broker_instance_dir>/etc/broker.xml
設定ファイルを開きます。 以下の例のように、
<wildcard-addresses>
セクションを設定に追加します。<configuration> <core> ... <wildcard-addresses> // <enabled>true</enabled> // <delimiter>,</delimiter> // <any-words>@</any-words> // <single-word>$</single-word> </wildcard-addresses> ... </core> </configuration>
enabled
-
true
に設定すると、カスタム設定を使用するようにブローカーに指示します。 delimiter
-
デフォルトの
.
の代わりにdelimiter
として使用するカスタム文字を指定します 。 any-words
-
any-words
の値として提供される文字は、'0 個以上の任意の単語のシーケンスに一致する' という意味で使用され、デフォルトの#
を置き換えます。式の最後にこの文字を使用します。 single-word
-
single-word
の値として指定された文字は、'単一の単語に一致する' という意味で使用され、デフォルトの*
を置き換えます。この文字は式内の任意の場所を使用します。