4.19. 配置环队列


通常,AMQ 代理中的队列使用先进(FIFO)语义。这意味着代理将消息添加到队列的尾部,并将它们从头中删除。环队列是一种特殊类型的队列,存放指定的固定消息数。代理会在新消息到达时删除队列头的消息,但队列已保存指定数量的邮件,以此维护固定队列大小。

例如,一个环队列配置了大小为 3,制作者按顺序发送消息 ABCD。消息 C 到达队列后,队列中的消息数已达到配置的环大小。此时消息 A 处于 队列的头部,而消息 C 位于 尾部。当消息 D 到达队列时,代理会将消息添加到队列的尾部。要维护固定队列大小,代理会在队列头删除消息(即消息 A)。消息 B 现在处于队列的头部。

4.19.1. 配置环队列

以下步骤演示了如何配置环队列。

流程

  1. 打开 <broker_instance_dir>/etc/broker.xml 配置文件。
  2. 要在匹配地址上为未设置明确环大小的所有队列定义默认环大小,请在 address-setting 元素中指定 default-ring- size 的值。例如:

    <address-settings>
       <address-setting match="ring.#">
          <default-ring-size>3</default-ring-size>
       </address-setting>
    </address-settings>

    default-ring-size 参数对于定义自动创建的队列的默认大小特别有用。default-ring-size 的默认值为 -1 (即无大小限制)。

  3. 若要在特定队列上定义环大小,请将 ring-size 键添加到 队列 元素中。指定一个值。例如:

    <addresses>
       <address name="myRing">
          <anycast>
             <queue name="myRing" ring-size="5" />
          </anycast>
       </address>
    </addresses>
注意

您可以在代理运行时更新 ring-size 值。代理会动态应用更新。如果新的 ring-size 值小于之前的值,代理不会立即从队列头中删除消息来强制实施新大小。发送到队列的新消息仍会强制删除较旧的消息,但队列的大小不会达到新的、减小的大小,除非通过客户端正常使用的消息而自动执行此操作。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.