2.2. Apache ActiveMQ Artemis Core API 和 Jakarta Messaging Destinations
让我们简要讨论 Jakarta 消息目的地如何映射到 Apache ActiveMQ Artemis 地址。
Apache ActiveMQ Artemis 内核是 Jakarta Messaging-agnostic.它没有任何雅加达消息传递主题的概念。Jakarta Messaging 主题作为地址(主题名称)在核心中实施,队列绑定为零个或多个队列。绑定到该地址的每个队列都代表一个主题订阅。同样,雅加达消息传递队列实施为一个地址(雅加达消息传递队列名称),其中有一个队列绑定到它,表示 Jakarta 消息传递队列。
按照惯例,所有 Jakarta 消息队列映射到核心队列,其中核心队列名称具有 string jms.queue. 前缀为它。例如,名称为 Order .europe 的 Jakarta Messaging 队列将映射到带有 name jms.queue.orders.europe 的核心队列。绑定核心队列的地址也由核心队列名称提供。
对于 Jakarta Messaging 主题,通过将 string jms.topic. 添加到 Jakarta Messaging 主题的名称前,提供代表订阅的队列的绑定地址。例如,名称为 news.europe 的 Jakarta Messaging 主题将映射到核心 address jms.topic.news.europe。
换句话说,如果您使用名称 Order ,它将被路由到绑定到 address .europe 向 Jakarta 消息传递队列发送 Jakarta 消息jms.queue.orders.europe 的任何核心队列。如果您发送 Jakarta 消息 到名称为 news.europe 的 Jakarta Messaging 主题,它会在服务器上路由到绑定到 address jms.topic.news.europe 的任何核心队列。
如果要使用名称 Order .europe 为 Jakarta Messaging 队列配置设置,您需要配置对应的内核队列 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>