第 17 章 桥接代理
网桥提供了一种连接两个代理的方法,将消息从一个代理转发到另一个代理。
可用的网桥如下:
- Core
-
提供了一个示例,它演示了一个代理上部署的核心网桥,该网桥消耗来自本地队列的消息并将其转发到第二个代理上的地址。请参阅位于代理安装的 <
install_dir> /examples/features/standard/
目录中的core-bridge
示例。 - mirror
- 请查看 第 16 章 使用代理连接配置多站点、容错的消息传递系统
- 发件人和接收器
- 请查看 第 17.1 节 “代理连接的发件人和接收器配置”
- peer
- 请查看 第 17.2 节 “代理连接的对等配置”
注意
Core 网桥的 broker.xml
元素是 网桥
。其他桥接技术使用 < broker-connection>
元素。
17.1. 代理连接的发件人和接收器配置
通过在 broker.xml
的 < broker-connections
> 部分创建发件人或接收器代理连接元素,可以将代理连接到另一个代理。
对于 发件人
,代理在将消息发送到另一个代理的队列上创建一个消息消费者。
对于 接收器
,代理在从另一个代理接收消息的地址上创建一个消息制作者。
两个元素都作为消息网桥运行。但是,处理信息不需要额外的开销。发件人和接收器的行为与代理中的任何其他消费者或制作者相同。
特定队列可以通过发送方或接收器配置。通配符表达式可用于将发件人和接收器匹配到特定地址 或一组 地址。在配置发送方或接收器时,可以设置以下属性:
-
address-match
:使用通配符表达式将发件人或接收器与特定地址 或一组 地址匹配。 -
queue-name
:配置特定队列的发件人或接收器。 使用地址表达式:
<broker-connections> <amqp-connection uri="tcp://HOST:PORT" name="other-server"> <sender address-match="queues.#"/> <!-- notice the local queues for remotequeues.# need to be created on this broker --> <receiver address-match="remotequeues.#"/> </amqp-connection> </broker-connections> <addresses> <address name="remotequeues.A"> <anycast> <queue name="remoteQueueA"/> </anycast> </address> <address name="queues.B"> <anycast> <queue name="localQueueB"/> </anycast> </address> </addresses>
使用队列名称:
<broker-connections> <amqp-connection uri="tcp://HOST:PORT" name="other-server"> <receiver queue-name="remoteQueueA"/> <sender queue-name="localQueueB"/> </amqp-connection> </broker-connections> <addresses> <address name="remotequeues.A"> <anycast> <queue name="remoteQueueA"/> </anycast> </address> <address name="queues.B"> <anycast> <queue name="localQueueB"/> </anycast> </address> </addresses>
注意
Receivers 只能与已存在的本地队列匹配。因此,如果使用接收器,请确保队列在本地被预先创建。否则,代理无法与远程队列和地址匹配。
注意
不要创建具有相同目的地的发件人和接收器,因为这会产生一个无限循环来发送和接收。