本章節描述 JMS 目的地如何對應到 Apache ActiveMQ Artemis 的位址模型。如果您還沒這麼做,請先閱讀關於位址模型的內容,因為這裡會參考其中介紹的概念。
1. JMS 主題 (Topic)
JMS 主題實作為一個位址 (address),位址名稱與 JMS 主題名稱相同。
該 JMS 主題上的訂閱則表示為對應位址上的一個多播 (multicast) 佇列 (queue)。佇列的命名取決於訂閱是否為持久訂閱,並根據透過 JMS API 提供的客戶端 ID 和訂閱名稱來命名。
通常每個佇列只有一個消費者,但在使用 JMS 共享主題訂閱時,一個佇列上可以有多個消費者。因此,任何發送到 JMS 主題的消息都會被路由到綁定到相應位址的每個多播佇列,然後分派給這些佇列上的任何消費者(即 JMS 主題訂閱者)。如果位址上沒有佇列,則該消息會直接丟棄。
這有效地實現了 JMS 發布/訂閱語義。
2. JMS 佇列 (Queue)
同樣地,JMS 佇列實作為一個位址 (address),位址名稱與 JMS 佇列名稱相同。
然而,在對應的位址上只會有一個任播 (anycast) 佇列 (queue)。這個佇列上的所有 JMS 消費者將會共享佇列中的消息。佇列的名稱與位址相同。
這有效地實現了 JMS 點對點語義。