之前我們在介紹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
的,想要將第二個名字也進行模糊配置,就必須用兩個符號,如上。
如果不想使用兩個*
,比如可能中間還有更多的分隔等等,這裏我們就可以使用>
,該匹配符就沒有分隔符的限制了,如下: