10.2.2. 阻塞消息


由于多个制作者可以和同一地址关联,因此代理可能会在所有生产者中分配比实际可用更多的信贷。但是,您可以在任何防止代理发送分数超过可用值的任何地址上设置最大值。

在默认配置中,每个地址使用全局最大 100Mb 大小。当地址已满时,代理会将进一步的信息写入分页日志,而不是将其路由到队列。您可以阻止客户端发送更多信息,而不必分页,直到您使用了旧的消息。以这种方式阻止生产者流控制,防止代理耗尽内存,因为生产者在任何一个时间点上发送多个消息。

在配置中,块制作者流控制基于每个 address-setting 进行管理。配置适用于注册到地址的所有队列。换句话说,绑定到该地址的所有队列的总内存上限为 max-size-bytes 的值。

注意

阻塞取决于协议。在 AMQ Broker 中,AMQP、OpenWire 和 CoreWire 支持生产流程控制。但是,AMQP 会以不同的方式处理流程控制。如需更多信息 ,请参阅使用 AMQP 进行传输控制。

为地址配置最大大小

要将代理配置为在最大字节数范围内阻止消息,请向 BROKER_INSTANCE_DIR /etc/broker.xml 添加新的 addres-setting 配置元素到 BROKER_INSTANCE_DIR/etc/broker.xml

步骤

  • 在下面的示例配置中,address-settings 被设置为 BLOCK producers,在达到其最大大小为 300000 字节后发送消息。
<configuration>
  <core>
    ...
    <address-settings>
       <address-setting match="my.blocking.queue"> 1
          <max-size-bytes>300000</max-size-bytes>  2
          <address-full-policy>BLOCK</address-full-policy> 3
       </address-setting>
    </address-settings>
  </core>
</configuration>
1
以上配置适用于由 my.blocking.queue 地址()引用的任何队列。
2
将最大大小设置为 300000 字节。如果消息超过 max-size-bytes,代理将阻止从发送到地址的制作者。请注意,此元素支持字节表示法,如 "K"、"Mb" 和 "GB"。
3
address-full-policy 设置为 BLOCK,以启用阻塞制作者流控制。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.