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>
注意默认情况下,
默认值非破坏性
的值是false
。