4.20. 配置追溯地址
将地址配置为 被动 可让您保留发送到该地址的消息,包括在没有绑定到该地址的队列时。稍后创建队列并将其绑定到地址时,代理会追溯地将消息分发到这些队列。如果地址 没有 配置为被动且尚未绑定队列,代理会丢弃发送到该地址的消息。
当您配置追溯地址时,代理会创建一个类型的内部实例,称为 环队列。环队列是一种特殊类型的队列,存放指定的固定消息数。队列达到指定大小后,到达队列的下一个消息将强制最旧的消息退出队列。当您配置追溯地址时,您可以间接指定内部环队列的大小。默认情况下,内部队列使用 多播
路由类型。
由被动地址使用的内部环队列通过管理 API 公开。您可以检查指标并执行其他常见管理操作,如清空队列。环形队列还有助于 地址的整体内存使用量,这会影响消息分页等行为。
以下步骤演示了如何将地址配置为追溯。
流程
-
打开
<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
参数减少)不会自动从队列中删除消息,从而实现新的环大小
值。此行为是一种防止意外的消息丢失的保护。在这种情况下,您需要使用管理 API 来手动减少环队列中的消息数量。
其它资源
- 有关 ring 队列的详情请参考 第 4.19 节 “配置环队列”。