第 17 章 桥接代理
网桥提供了一种连接两个代理的方法,将消息从一个代理转发到另一个代理。
可用的网桥如下:
- Core
-
提供了一个示例,它演示了一个代理上部署的核心桥接,它消耗来自本地队列的消息并将其转发到第二个代理上的地址。请参阅位于代理安装的
<install_dir>/examples/features/standard/
目录中的core-bridge
示例。 - mirror
- 请查看 第 16 章 使用代理连接配置多站点、容错消息传递系统
- sender 和 receiver
- 请查看 第 17.1 节 “代理连接的发送者和接收器配置”
- peer
- 请查看 第 17.2 节 “代理连接的对等配置”
注意
Core 网桥的 broker.xml
元素是 bridge
。其他桥接技术使用 <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>
注意
接收器只能与已存在的本地队列匹配。因此,如果使用接收器,请确保在本地预先创建队列。否则,代理将无法与远程队列和地址匹配。
注意
不要创建具有相同目的地的发件者和接收方,因为这会产生发送和接收的无限循环。