7.3. 配置消息阻塞


以下流程演示了如何在给定地址达到您指定的最大大小限制时配置消息阻塞。

注意

只能为 Core、OpenWire 和 AMQP 协议配置消息阻塞。

7.3.1. 阻塞内核和 OpenWire producer

以下流程演示了如何在给定地址达到您指定的最大大小限制时为 Core 和 OpenWire 消息生成者配置消息阻塞。

先决条件

流程

  1. 打开 & lt;broker_instance_dir> /etc/broker.xml 配置文件。
  2. 对于您为匹配地址 或一组 地址配置的 address-setting 元素,请添加配置元素来定义消息阻塞行为。例如:

    <address-settings>
        <address-setting match="my.blocking.address">
            ...
            <max-size-bytes>300000</max-size-bytes>
            <address-full-policy>BLOCK</address-full-policy>
            ...
        </address-setting>
    </address-settings>
    max-size-bytes

    代理执行为 address-full-policy 指定的策略前允许地址的最大大小(以字节为单位)。您指定的值也支持字节表示法,如 "K"、"MB" 和 "GB"。

    注意

    如果在 address-setting 元素中指定 max-size-bytes,则该值将应用到 每个 匹配的地址。指定这个值 并不意味着 所有匹配地址 的总大小 限制为 max-size-bytes 的值。

    address-full-policy
    代理在达到最大大小时执行的操作。

    在上例中,当发送到地址 my.blocking.address 的内存超过 300000 字节的消息时,代理开始阻止来自 Core 或 OpenWire 消息制作者的进一步消息。

7.3.2. 阻塞 AMQP 生成者

Core 和 OpenWire 等协议使用一个窗口大小流控制系统。在这个系统中,信用代表字节,并分配到制作者。如果生成者希望发送消息,则生成者必须等待到其达到消息大小的足够信。

相反,AMQP 流控制信用不会代表字节数。相反,AMQP 学位允许生成者发送的消息数量,而不考虑消息大小。因此,在某些情况下,AMQP 生成者会显著超过地址的 max-size-bytes 值。

因此,要阻止 AMQP 生成者,您必须使用不同的配置元素 max-size-bytes-reject-threshold。对于匹配的地址或一组地址,此元素指定内存中所有 AMQP 消息的最大大小(以字节为单位)。当内存中所有消息的总大小达到指定的限制时,代理会阻止 AMQP 生成者发送进一步消息。

以下步骤演示了如何为 AMQP 消息生成者配置消息阻塞。

先决条件

流程

  1. 打开 & lt;broker_instance_dir&gt; /etc/broker.xml 配置文件。
  2. 对于您为匹配地址 或一组 地址配置的 address-setting 元素,请指定内存中所有 AMQP 消息的最大大小。例如:

    <address-settings>
        <address-setting match="my.amqp.blocking.address">
            ...
            <max-size-bytes-reject-threshold>300000</max-size-bytes-reject-threshold>
            ...
        </address-setting>
    </address-settings>
    max-size-bytes-reject-threshold

    代理阻止进一步的 AMQP 消息之前允许地址的最大大小(以字节为单位)。您指定的值也支持字节表示法,如 "K"、"MB" 和 "GB"。默认情况下,max-size-bytes-reject-threshold 设置为 -1, 这意味着没有最大大小。

    注意

    如果您在 address-setting 元素中指定 max-size-bytes-reject-threshold,则该值将应用到 每个 匹配的地址。指定这个值 并不意味着 所有匹配地址 的总大小 限制为 max-size-bytes-reject-threshold 的值。

在上例中,当发送到地址 my.amqp.blocking.address 的消息在内存中超过 300000 字节时,代理开始阻止来自 AMQP 生成者的进一步消息。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.