2.2. Apache ActiveMQ Artemis Core API 和 JMS Destinations
让我们快速讨论 JMS 目的地如何映射到 Apache ActiveMQ Artemis 地址。
Apache ActiveMQ Artemis 核心是 JMS-agnostic.它没有任何 JMS 主题的概念。JMS 主题在 core 中作为绑定有零个或多个队列的地址(主题名称)实施。绑定到该地址的每个队列都代表一个主题订阅。类似地,JMS 队列作为地址(JMS 队列名称)实施,其绑定了一个队列,它代表 JMS 队列。
按照惯例,所有 JMS 队列映射到核心队列,其中核心队列名称具有 string jms.queue. 前缀为它。例如,名称为 Order .europe 的 JMS 队列将使用 name jms.queue.orders.europe 映射到核心队列。绑定核心队列的地址也由核心队列名称提供。
对于 JMS 主题,通过将 string jms.topic. 添加到 JMS 主题的名称来为代表订阅的队列绑定的地址。例如,名称为 news.europe 的 JMS 主题将映射到核心 address jms.topic.news.europe。
换句话说,如果您发送 JMS 消息到带有名称 Order .europe 的 JMS 队列,它会在服务器上路由到绑定到 address jms.queue.orders.europe 的任何核心队列。如果您发送 JMS 消息到名称为 news.europe 的 JMS 主题,它会在服务器上路由到绑定到 address jms.topic.news.europe 的任何核心队列。
如果要使用名称 Order .europe 配置 JMS 队列的设置,您需要配置对应的内核 queue jms.queue.orders.europe :
<!-- expired messages in JMS Queue "orders.europe" will be sent to the JMS Queue "expiry.europe" --> <address-setting match="jms.queue.orders.europe"> <expiry-address>jms.queue.expiry.europe</expiry-address> ... </address-setting>
<!-- expired messages in JMS Queue "orders.europe" will be sent to the JMS Queue "expiry.europe" -->
<address-setting match="jms.queue.orders.europe">
<expiry-address>jms.queue.expiry.europe</expiry-address>
...
</address-setting>