第 17 章 桥接代理
网桥提供了一种连接两个代理的方法,将消息从一个代理转发到另一个代理。
可用的网桥如下:
- Core
-
提供了一个例子,它演示了一个代理上部署的核心网桥,它消耗本地队列的消息并将其转发到第二个代理上的地址。请参阅位于代理安装的 <
install_dir> /examples/features/standard/
目录中的core-bridge
示例。 - mirror
- 请查看 第 16 章 使用代理连接配置多站点、容错消息传递系统
- 发件人和接收器
- 请查看 第 17.1 节 “代理连接的发送者和接收器配置”
- peer
- 请查看 第 17.2 节 “代理连接的对等配置”
核心网桥的 broker.xml
元素是 bridge
。其他桥接技术使用 < broker-connection>
元素。
17.1. 代理连接的发送者和接收器配置
通过在 broker.xml
的 < broker-connections
> 部分中创建一个 sender 或 receiver 代理连接元素,可以将代理连接到另一个代理。
对于 发送者
,代理会在队列上创建一个消息消费者,它将消息发送到另一个代理。
对于 接收器
,代理会在接收来自另一个代理的消息的地址上创建一个消息制作者。
两个元素都作为消息总线运行。但是,处理消息不需要额外的开销。发件人和接收器的行为与代理中的任何其他消费者或生成者一样。
特定的队列可以通过发送方或接收器来配置。通配符表达式可用于将发送者和接收器与特定地址 或一组 地址匹配。在配置发送方或接收器时,可以设置以下属性:
-
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 只能与已存在的本地队列匹配。因此,如果使用接收器,请确保在本地预先创建队列。否则,代理无法与远程队列和地址匹配。
不要创建具有相同目的地的发送方和接收器,因为这创建了发送和接收无限循环。