16.4. 启用消息重新发布


如果您的代理集群使用 on-demand 消息负载均衡,您可以配置 消息重新分发以防止消息在没有 消费者使用消息的队列中是"stuck"。

本节包含有关:

16.4.1. 了解消息重新分发

代理集群使用负载均衡来在集群中分发消息负载。在集群连接中配置负载均衡时,如果您将 message-load-balancing 设置为 ON_DEMAND,则代理仅将消息转发到具有匹配使用者的其他代理。此行为可确保消息不会移到没有消费者使用消息的队列。但是,如果在将消息转发到代理后与队列连接有一个接近的使用者,这些消息会成为队列中的"stuck",且未被使用。此问题有时称为 星号

消息重新分发通过自动将消息从没有消费者到具有匹配使用者的代理的队列自动重新分发,从而防止出现混乱的问题。

16.4.1.1. 使用消息过滤器重新分配消息的限制

消息 重新分发不支持 使用者使用过滤器(也称为 选择器)。带有过滤器的用户的常见用例是请求模式,使用关联 ID。例如,请考虑以下情境:

  1. 您有一个两个代理( brokerAbrokerB )集群。每个代理都配置,将 redistribution-delay 设置为 0,message-load-balancing 设置为 ON_DEMAND
  2. brokerA and brokerB each has a queue named myQueue.
  3. 根据请求,生产者发送发送到 brokerA 上队列 myQueue 的消息。该消息具有关联 ID 属性,名为 myCorrelID,值设为 10
  4. 消费者通过过滤器 myCorrelID=5 连接到 brokerA 上的 myQueue。此过滤器与消息的关联 ID 值不匹配。
  5. 另一个消费者通过过滤器 myCorrelID=10 连接到 brokerB 上的队列 myQueue。此过滤器与消息的关联 ID 值匹配。

    在这种情况下,虽然 brokerB 上的使用者过滤器与消息匹配,但该消息 不会从 brokerA 重新分发给 brokerB,因为 brokerA 上存在队列 myQueue 的使用者。

在前面的场景中,您可以通过在请求发送到生产者 之前创建 使用者来确保所需的客户端收到消息。该消息会立即路由到消费者,过滤器与消息的关联 ID 匹配。不需要重新分发。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.