4.11.4. 为最后一个值队列强制使用非破坏性
当消费者连接到队列时,通常的行为是发送到该消费者的消息只能被消费者获取。当消费者确认接收消息时,代理会从队列中删除消息。
作为正常消耗的替代方案,您可以将队列配置为强制实施 非破坏性 消耗。在这种情况下,当队列向消费者发送消息时,其他消费者仍然可以收到该消息。此外,即使消费者已经使用过该消息,该消息也会保留在队列中。当您实施这种非破坏性消耗行为时,消费者被称为队列 浏览器。
强制使用非破坏性是最后一个值队列的实用配置,因为它可确保队列始终保存特定最后值键的最新值。
以下步骤演示了如何为最后一个值队列强制实施非破坏性消耗。
先决条件
您已单独配置最后值队列,或者针对与某一地址或地址 集 关联的所有队列配置。如需更多信息,请参阅:
流程
-
打开
<broker_instance_dir>/etc/broker.xml
配置文件。 如果您之前将队列单独配置为最后一个值队列,请添加
非破坏性
密钥。将值设为true
。例如:<address name="my.address"> <multicast> <queue name="orders1" last-value-key="stock_ticker" non-destructive="true" /> </multicast> </address>
如果您之前为最后一个值队列配置了地址或 一组 地址,请添加
默认值非破坏性
密钥。将值设为true
。例如:<address-setting match="lastValue"> <default-last-value-key>stock_ticker </default-last-value-key> <default-non-destructive>true</default-non-destructive> </address-setting>
注意默认情况下,default
-non-destructive 的值为
false
。