Apache ActiveMQ Artemis 在安全设置、地址设置和创建消费者时使用特定语法来表示通配符。

该语法类似于 AMQP 使用的语法。

Apache ActiveMQ Artemis 通配符表达式包含**由分隔符分隔的单词**。默认分隔符为.(句点)。

特殊字符#* 也有特殊含义,可以代替单词

需要明确的是,通配符字符不能像在 正则表达式 中那样使用。它们专门作用于**由分隔符分隔的单词**。

1. 匹配任何单词

字符# 表示“匹配任何零个或多个单词的序列”。

因此,通配符news.europe.# 将匹配

  • news.europe

  • news.europe.sport

  • news.europe.politics

  • news.europe.politics.regional

但是news.europe.# 不会匹配

  • news.usa

  • news.usa.sport

  • entertainment

2. 匹配单个单词

字符* 表示“匹配单个单词”。

通配符news.* 将匹配

  • news.europe

  • news.usa

但是news.* 不会匹配

  • news.europe.sport

  • news.usa.sport

  • news.europe.politics.regional

通配符news.*.sport 将匹配

  • news.europe.sport

  • news.usa.sport

但是news.*.sport 不会匹配

  • news.europe.politics

3. 自定义语法

可以使用代理配置进一步配置通配符地址的语法。为此,使用<wildcard-addresses> 配置标签。

<wildcard-addresses>
   <routing-enabled>true</routing-enabled>
   <delimiter>.</delimiter>
   <any-words>#</any-words>
   <single-word>*</single-word>
</wildcard-addresses>

上面的示例显示了默认配置。