第 12 章 分离消息和分割消息流


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

12.1. 消息 diverts 的工作原理

diverts 可让您在不更改任何客户端应用程序逻辑的情况下,以透明的方式将路由到一个地址的消息。考虑将代理服务器上的一组 diverts 作为消息的路由表类型。

divert 可以 专用,这意味着消息被定向到指定的转发地址,而无需转至原始地址。

divert 也可以是 非独占 的,这意味着消息将继续进入其原始地址,而代理会将消息副本发送到指定的转发地址。因此,您可以使用非独占性分支来分割消息流。例如,如果要单独监控发送到订单队列的每个订单,您可以分割消息流。

可以为单个地址配置多个不同因素。当地址同时配置了 exclusive 和 non-exclusive diverts 时,代理会首先处理 exclusiverts。如果一个特定消息已被一个专用的 divert 分离,代理不会处理该消息的任何非独占性分析。在这种情况下,消息永远不会发送到原始地址。

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

注意

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat