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
address 设置元素的配置,该元素会覆盖与 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. 配置代理通配符语法
以下流程演示了如何自定义用于通配符地址的语法。
流程
-
打开 &
lt;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
-
提供自定义字符作为
分隔符
替代默认字符(.
)。 任意词语
-
提供的字符作为
任意词语
的值用于表示"匹配任何零个或多个单词序列",并替换默认的#
。在表达式的末尾使用此字符。 single-word
-
提供的字符作为
单词语
值的字符用于表示"匹配单个单词",并将替换默认的*
。在您的表达式的任意位置使用此字符。