4.2. 将地址设置应用到一组地址


在 AMQ Broker 中,您可以使用通配符表达式代表匹配的地址名称,将 address-setting 元素中指定的配置应用到 一组 地址。

以下小节论述了如何使用通配符表达式。

4.2.1. AMQ Broker 通配符语法

AMQ Broker 使用特定语法来代表地址设置中的通配符。通配符也可以在安全设置中使用,并在创建使用者时使用。

  • 通配符表达式包含一个以句点(.)分隔的词语。
  • 数字符号 (#) 和星号 (*) 字符还有特殊的用处,可以替代一个词,例如:

    • 数字符号字符表示"匹配任何 0 个或更多连续的词"。在表达式的末尾使用它。
    • 星号字符表示"匹配单个单词"。在您的表达式中的任何位置使用它。

匹配不是按照字符进行的,而是根据分割的字符段进行的。例如,一个 address-setting 项被配置为匹配名称中带有 my 的队列将匹配名为 myqueue 的队列。

当多个 address-setting 元素与地址匹配时,代理覆盖配置将最小特定匹配项的配置用作基准。表达式中的字面字符比通配符更具体,星号 (*) 比数字符号更具体 (#)。例如,my.destinationmy.* 都会匹配地址 my.destination。在这种情况下,代理首先应用 my opg 下找到的配置,因为通配符表达式比字面 小。接下来,代理覆盖 my.destination address 设置元素的配置,它会覆盖任何使用 my ClusterClaim 共享的配置。例如,假设与 my.destination 关联的队列将 max-delivery-attempts 设置为 3last-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>
Copy to Clipboard Toggle word wrap

下表中的示例说明了如何使用通配符来匹配一组地址。

Expand
表 4.2. 使用通配符匹配地址
Example描述

#

broker.xml 中使用的默认 address-setting。匹配每个地址。您可以继续应用此 catch-all,或者您可以根据需要为每个地址或一组地址添加新的 address-setting

news.europe.#

匹配 news.europe,news.europe.sport,news.europe.politics.fr,但不匹配 news.usaeurope

news.*

匹配 news.europenews.usa,但不匹配 news.europe.sport

news.*.sport

匹配 news.europe.sportnews.usa.sport,但不匹配 news.europe.fr.sport

4.2.2. 配置字面匹配

在字面匹配中,通配符将被视为字面字符,以匹配包含通配符的地址。例如,字面匹配中的 hash (#)字符可以匹配 orders. Slack 但没有匹配地址的地址,如 orders.retailorders.wholeell

流程

  1. 打开 & lt;broker_instance_dir&gt; /etc/broker.xml 配置文件。
  2. 在配置字面匹配项前,请使用 literal-match-markers 参数来定义限制字面匹配项的字符。在以下示例中,使用括号来限制字面匹配。

    <core>
       ...
       <literal-match-markers>()</literal-match-markers>
       ...
    </core>
    Copy to Clipboard Toggle word wrap
  3. 在定义了限制字面匹配项的标记后,在 address 设置 match 参数中指定匹配项,包括标记。以下示例为名为 orders. "" 的地址配置字面匹配,以启用该特定地址的指标。

    <address-settings>
       <address-setting match="(orders.#)">
          <enable-metrics>true</enable-metrics>
       </address-setting>
    </address-settings>
    Copy to Clipboard Toggle word wrap

4.2.3. 配置代理通配符语法

以下流程演示了如何自定义用于通配符地址的语法。

流程

  1. 打开 & lt;broker_instance_dir&gt; /etc/broker.xml 配置文件。
  2. 在配置中添加 < wildcard-addresses > 部分,如下例所示。

    <configuration>
      <core>
        ...
        <wildcard-addresses> //
          <enabled>true</enabled> //
          <delimiter>,</delimiter> //
          <any-words>@</any-words> //
          <single-word>$</single-word>
        </wildcard-addresses>
        ...
      </core>
    </configuration>
    Copy to Clipboard Toggle word wrap
    enabled
    当设置为 true 时,指示代理使用您的自定义设置。
    delimiter
    提供自定义字符作为 分隔符 替代默认字符(.)。
    any-words
    作为 any-words 的值提供的字符代表“匹配 0 个或更多个序列”,并将替换默认的 #。在表达式的末尾使用此字符。
    单词
    作为 single-word 的值提供的字符代表“匹配一个词”,并将替换默认的 *。在您的表达式中的任何位置使用此字符。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat