4.18. 配置环队列


通常,AMQ Broker 中的队列使用先发(FIFO)语义。这意味着代理在队列的尾部添加信息,并将它们从头中删除。环队列是一种特殊的队列,它保存指定的固定消息数。当新消息到达时,代理通过删除队列头中的消息来维护固定队列大小,但队列已包含指定数量的消息。

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

4.18.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 键添加到 queue 元素中。指定一个值。例如:

    <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.