之前我们在介绍ActiveMQ的时候,在进行举例的时候其生产者和消费者配置的目的地Destination一般都是一致的,不然我们的消费者也接受不到生产者发送的消息呀,但是其实我们的消费者在配置Destination的时候是可以进行通配符Wildcards订阅的。
Wildcards用来支持联合的名字分层体系(federated name hierarchies)。它不是JMS 规范的一部分,而是ActiveMQ 的扩展。ActiveMQ 支持三种 .
、*
、>
:
- . 用于作为路径上名字间的分隔符
- * 用于匹配路径上的任何名字
- > 用于递归地匹配任何以这个名字开始的destination
这里我们在消息的生产者配置的目的地Destination如下:
这里我们消费者想要获取上述com.bax.test.mq
中的消息时,我们设置相同的名称肯定是可以获取了,这里我们在消费者中使用通配符该如何配置呢,如下:
上述消费者不仅可以获取到com.bxs.test.mq
的消息,还可以获取com.bxs.test2.mq
、com.bxs.dev.mq
等等,其中的*
可以由任何的名字进替换,但是不能有分隔符.
存在,如下:
这样的com.*.mq
是无法匹配到com.bxs.test.mq
的,想要将第二个名字也进行模糊配置,就必须用两个符号,如上。
如果不想使用两个*
,比如可能中间还有更多的分隔等等,这里我们就可以使用>
,该匹配符就没有分隔符的限制了,如下: