4.7. 配置订阅队列


在大多数情况下,不需要手动创建订阅队列,因为协议经理在第一次请求订阅地址时自动创建订阅队列。如需更多信息,请参阅 第 4.8.3 节 “协议管理器和地址”。对于持久订阅,生成的队列名称通常是客户端 ID 和地址的串联。

以下小节介绍了如何在需要时手动创建订阅队列。

4.7.1. 配置持久的订阅队列

当队列配置为持久订阅时,代理会为任何不活跃订阅者保存消息,并在用户重新连接时将其提供给用户。因此,在订阅队列后,可以保证接收发送到队列的每个消息。

流程

  1. 打开 & lt;broker_instance_dir> /etc/broker.xml 配置文件。
  2. durable 配置元素添加到所选的队列。设置一个值 true

    <configuration ...>
      <core ...>
        ...
        <address name="my.durable.address">
          <multicast>
            <queue name="q1">
              <durable>true</durable>
            </queue>
          </multicast>
        </address>
      </core>
    </configuration>
    注意

    由于队列默认是持久的,包括 durable 元素并将值设为 true 不是绝对必要,以创建持久队列。但是,明确包含 元素可让您稍后更改队列的行为(如果需要)。

4.7.2. 配置非共享的持久订阅队列

代理可以被配置为防止多个消费者同时连接到队列。因此,通过这种方式配置的队列订阅被视为"非共享"。

流程

  1. 打开 & lt;broker_instance_dir&gt; /etc/broker.xml 配置文件。
  2. durable 配置元素添加到每个所选队列。设置一个值 true

    <configuration ...>
      <core ...>
        ...
        <address name="my.non.shared.durable.address">
          <multicast>
            <queue name="orders1">
              <durable>true</durable>
            </queue>
            <queue name="orders2">
              <durable>true</durable>
            </queue>
          </multicast>
        </address>
      </core>
    </configuration>
    注意

    由于队列默认是持久的,包括 durable 元素并将值设为 true 不是绝对必要,以创建持久队列。但是,明确包含 元素可让您稍后更改队列的行为(如果需要)。

  3. max-consumers 属性添加到每个所选队列。设置值 1

    <configuration ...>
      <core ...>
        ...
        <address name="my.non.shared.durable.address">
          <multicast>
            <queue name="orders1" max-consumers="1">
              <durable>true</durable>
            </queue>
            <queue name="orders2" max-consumers="1">
              <durable>true</durable>
            </queue>
          </multicast>
        </address>
      </core>
    </configuration>

4.7.3. 配置非可持续的订阅队列

非可持续订阅通常由相关协议管理器管理,它将创建和删除临时队列。

但是,如果您手动创建一个队列,它的行为与不可持续的订阅队列一样,您可以在队列中使用 purge-on-no-consumers 属性。当 purge-on-no-consumers 设为 true 时,队列不会开始接收消息,直到消费者连接为止。另外,当最后一个消费者与队列断开连接时,队列将被清除(即,其消息会被删除)。在新的消费者连接到队列之前,队列不会接收任何其他消息。

流程

  1. 打开 & lt;broker_instance_dir&gt; /etc/broker.xml 配置文件。
  2. purge-on-no-consumers 属性添加到每个所选队列。设置一个值 true

    <configuration ...>
      <core ...>
        ...
        <address name="my.non.durable.address">
            <multicast>
                <queue name="orders1" purge-on-no-consumers="true"/>
            </multicast>
        </address>
      </core>
    </configuration>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.