4.19. 配置被动地址
将地址配置为 被动 可让您保留发送到该地址的消息,包括当没有队列绑定到地址时。稍后创建队列并绑定到地址时,代理会主动向这些队列分发信息。如果地址没有配置为 Retroactive 且还没有绑定的队列,则代理会丢弃发送到该地址的消息。
当您配置 retroactive 地址时,代理创建一组名为 ring 队列 的内部实例。环队列是一种特殊的队列,它保存指定的固定消息数。队列达到指定大小后,到达队列的下一个消息会强制从队列发出最旧的消息。当您配置 retroactive 地址时,您间接指定内部环队列的大小。默认情况下,内部队列使用 多播路由
类型。
由 retroactive 地址使用的内部环队列通过管理 API 公开。您可以检查指标并执行其他常见管理操作,如清空队列。环队列也提供地址的整体内存用量,这会影响消息分页等行为。
以下步骤演示了如何将地址配置为 retroactive。
步骤
-
打开
<broker-instance-dir>/etc/broker.xml
配置文件。 在
address-setting
元素中为retroactive-message-count
参数指定值。您指定的值定义代理要保留的消息数量。例如:<configuration> <core> ... <address-settings> <address-setting match="orders"> <retroactive-message-count>100</retroactive-message-count> </address-setting> </address-settings> ... </core> </configuration>
注意您可以在代理运行时更新
retroactive-message-count
的值,可以是broker.xml
配置文件或管理 API。但是,如果您 减少 此参数的值,则需要一个额外的步骤,因为被动地址是通过环队列实现的。模拟ring-size
参数的 ring 队列不会自动从队列中删除消息,以实现新的ring-size
值。这个行为可以防止意外的消息丢失。在这种情况下,您需要使用 management API 手动减少环队列中的消息数量。
其他资源
- 有关环队列的更多信息,请参阅 第 4.18 节 “配置环队列”。