第 14 章 隔离消息和分割消息流

在 AMQ Broker 中,您可以配置名为 move rts 的对象,以便以透明的方式将信息从一个地址移动到另一个地址,而无需更改任何客户端应用程序逻辑。您还可以配置 movert,将消息 的副本 转发到指定的转发地址,从而有效地分割消息流。

14.1. 消息传送如何工作

rts 可让您透明地将路由到一个地址的消息传送到某个其他地址,而不更改任何客户端应用逻辑。可将代理服务器集合视为消息的路由表类型。

另一款产品可以 独占使用,即消息将传播到指定的转发地址,而不考虑其原始地址。

movert 也可以是 排除的,即消息继续转至其原始地址,而代理会将消息的副本发送到指定的转发地址。因此,您可以使用非排除来分割消息流。例如,如果您想要单独监控发送到订单队列的每个顺序,您可以分割消息流。

当地址同时配置了独占和非排除的经销时,代理会首先处理独占的抵押。如果特定的消息已被独占出去,代理不会处理该消息的任何非排除符。在这种情况下,消息永远不会发送到原始地址。

当代理传播信息时,代理会分配新消息 ID,并将消息地址设置为新转发地址。您可以通过 _AMQ_ORIG_ADDRESS (字符串类型)和 _AMQ_ORIG_MESSAGE_ID (长类型)消息属性来检索原始消息 ID 和地址值。如果使用 Core API,请使用 Message.HDR_ORIGINAL_ADDRESSMessage.HDR_ORIG_MESSAGE_ID 属性。

注意

您只能将消息信息传播到同一代理服务器上的地址。如果您想移动到其他服务器上的地址,那么常见的解决方案是首先将消息移动到本地存储和转发队列。然后,设置从该队列消耗的网桥,并将消息转发到不同代理上的地址。通过将 moverts 与网桥相结合,您可以在地理上分散的代理服务器之间创建路由连接的分布式网络。这样,您可以创建全局消息传递网格。