7.3. 配置消息阻塞
以下流程演示了如何在给定地址达到您指定的最大大小限制时配置消息阻塞。
您只能为 Core、OpenWire 和 AMQP 协议配置消息阻塞。
7.3.1. 阻塞 Core 和 OpenWire producers 复制链接链接已复制到粘贴板!
以下流程演示了如何在给定地址达到您指定的最大大小限制时为 Core 和 OpenWire 消息生成者配置消息阻塞。
先决条件
- 您应该熟悉如何配置地址和地址设置。更多信息请参阅 第 4 章 配置地址和队列。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 对于您为匹配地址 或一组 地址配置的
address-setting
元素,请添加配置元素来定义消息阻塞行为。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 消息生成者配置消息阻塞。
先决条件
- 您应该熟悉如何配置地址和地址设置。更多信息请参阅 第 4 章 配置地址和队列。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 对于您为匹配地址 或一组 地址集配置的
address-setting
元素,请指定内存中所有 AMQP 消息的最大大小。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 生成者的进一步消息。