搜索

14.4. 启用消息重新分发

download PDF

如果您的代理集群配置了 消息-load-balancing 设置为 ON_DEMANDOFF_WITH_REDISTRIBUTION,则可以配置 消息 重新分配以防止在队列中没有消费者使用消息的消息"stuck"。

这部分包含有关以下内容的信息:

14.4.1. 了解消息重新分发

代理集群使用负载均衡来在集群中分发消息负载。当在集群连接中配置负载均衡时,您可以使用 以下消息-load-balancing 设置启用 redistribution:

  • ON_DEMAND - 启用负载均衡并允许重新分发
  • OFF_WITH_REDISTRIBUTION - 禁用负载均衡,但允许重新分发

在这两种情况下,代理仅将信息转发给具有匹配消费者的其他代理。这个行为可确保消息不会移到没有消费者使用消息的队列。但是,如果在消息转发到代理后连接到队列后,这些消息会在队列中变为"stuck"且不会被使用。此问题有时被称为 星号

消息重新分发通过自动重新分发消息从没有消费者到集群中有匹配使用者的代理的队列重新分发。

使用 OFF_WITH_REDISTRIBUTION 时,代理仅在没有活跃本地消费者的情况下将消息转发到匹配消费者的其他代理,允许您在提供消费者不可用时优先考虑代理。

消息重新分发支持使用过滤器(也称为 选择器),即当消息与可用本地消费者的选择器不匹配时重新分发。

其他资源

14.4.2. 配置消息重新分发

此步骤演示了如何配置消息重新使用负载均衡。如果您希望在没有负载均衡的情况下重新分配消息,将 &lt ;message-load-balancing& gt; 设置为 OFF_WITH_REDISTRIBUTION

流程

  1. 打开 & lt;broker_instance_dir> /etc/broker.xml 配置文件。
  2. 在 & lt;cluster-connection&gt; 元素中,验证 <message-load-balancing& gt; 是否已设置为 ON_DEMAND

    <configuration>
        <core>
            ...
            <cluster-connections>
                <cluster-connection name="my-cluster">
                    ...
                    <message-load-balancing>ON_DEMAND</message-load-balancing>
                    ...
                </cluster-connection>
            </cluster-connections>
        </core>
    </configuration>
  3. 在 & lt;address-settings > 元素内,为队列或一组队列设置重新分发延迟。

    在这个示例中,在最后一个消费者接近后,负载均衡到 my.queue 的消息将被重新分配 5000 毫秒。

    <configuration>
        <core>
            ...
            <address-settings>
                <address-setting match="my.queue">
                    <redistribution-delay>5000</redistribution-delay>
                </address-setting>
            </address-settings>
            ...
        </core>
    </configuration>
    address-setting
    match 属性设置为您要重新分发消息的队列的名称。您可以使用代理通配符语法来指定一系列队列。更多信息请参阅 第 4.2 节 “将地址设置应用到一组地址”
    redistribution-delay
    代理在将信息重新分发至集群中其他代理之前,代理在最终消费者关闭后应等待的时间(以毫秒为单位)。如果将其设置为 0, 则会立即重新分发信息。但是,您应该在重新分发前设置延迟 - 这对于消费者而言很常见,但要在同一队列上快速创建另一个对象。
  4. 对集群中的每个额外代理重复此步骤。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.