第 12 章 转换消息和分割消息流
在 AMQ Broker 中,您可以配置名为偏 移的对象, 以便您可以透明地将消息从一个地址转移到另一个地址,而无需更改任何客户端应用程序逻辑。您还可以配置一个转换,将消息 副本 转发到指定的转发地址,从而有效地分割消息流。
12.1. 邮件如何改变工作
转换可让您透明地将路由到某个其他地址的消息转移到某个其他地址,而不更改任何客户端应用逻辑。考虑将代理服务器上的移动作为消息的路由表类型。
转换可以是 独占 的,即消息会转移到指定的转发地址,而不转至其原始地址。
转换也可能不是 独占 性的,这意味着消息继续转至其原始地址,而代理会将消息副本发送到指定的转发地址。因此,您可以使用非独占偏移来分割消息流。例如,如果您想单独监控发送到订单队列的每个顺序,您可以分割消息流。
当地址同时配置了排他性和非独占性时,代理会首先处理独占性转换。如果某一特定消息已被排解,代理不会处理针对该消息的任何非排他性转变。在这种情况下,邮件永远不会发送到原始地址。
当代理转换消息时,代理会分配一个新的消息 ID,并将消息地址设置为新的转发地址。您可以通过 _AMQ_ORIG_ ADDRESS(字符串类型)和
(长类型)消息属性来检索原始消息 ID 和地址值。如果您使用 Core API,请使用 _AMQ_ORIG_
MESSAGE_IDMessage.HDR_ORIGINAL_ADDRESS
和 Message.HDR_ORIG_MESSAGE_ID
属性。
您只能将消息传送到同一代理服务器上的地址。如果您想转用其他服务器上的地址,常见的解决方案是首先将消息转移到本地存储转发队列。然后,设置一个使用来自该队列的桥接,并将消息转发到不同代理上的地址。通过将转换与网桥相结合,您可以在地理分布式代理服务器之间创建路由连接的分布式网络。这样,您可以创建一个全局消息传递网格。