4.7. 配置订阅队列
在大多数情况下,不需要手动创建订阅队列,因为当客户端第一次请求订阅地址时,协议管理器会自动创建订阅队列。请参阅 第 4.8.3 节 “协议管理器和地址” 了解更多信息。对于 durable 订阅,生成的队列名称通常是客户端 ID 和地址的连接。
以下小节演示了如何根据需要手动创建订阅队列。
4.7.1. 配置持久订阅队列
当队列配置为可激活的订阅时,代理会为任何不活跃订阅者保存消息,并在用户重新连接时将它们传送到订阅者。因此,客户端保证在订阅队列后接收发送到队列的每个消息。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 将
durable
配置元素添加到所选队列中。设置true
值。<configuration ...> <core ...> ... <address name="my.durable.address"> <multicast> <queue name="q1"> <durable>true</durable> </queue> </multicast> </address> </core> </configuration>
注意由于队列默认为 durable,因此包括
durable
元素并将值设为true
并不是创建持久队列的严格要求。但是,显式包含元素可让您稍后将队列的行为改为不可写入的(如果需要)。
4.7.3. 配置不可激活的订阅队列
不可强化的订阅通常由相关的协议管理器管理,后者创建和删除临时队列。
但是,如果要手动创建行为类似于不可配置订阅队列的队列,您可以在队列中使用 purge-on-no-consumers
属性。当 purge-on-no-consumers
设为 true
时,队列不会开始接收消息,直到消费者连接为止。另外,当最后一个消费者与队列断开连接时,队列将被清除(即,其消息会被删除)。在新的消费者连接到队列前,队列不会接收任何进一步的消息。
流程
-
打开 &
lt;broker_instance_dir> /etc/broker.xml
配置文件。 将
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>