场景: 用户正在进行长时间测验。每次互动后,我都会将当前分数和位置存储在测验中。我只想在数据库中存储用户在当前启动期间所做的last交互。
现在我通过 Redis 实现了这一点,每次我存储最后一次交互时,我都会覆盖前一个交互。
这可以通过 Apache 的 ActiveMQ“经典”来实现吗?每个用户都可以对其消息进行分组,而我只使用组中收到的最后一条消息?
我不知道在 ActiveMQ 5.x 中是否有任何自动化方法来执行此操作,但您可以使用 “最后一个值”队列使用 ActiveMQ Artemis 来完成此操作。此功能允许您将消息上的特殊属性设置为特定值,并且每当具有相同属性值的另一条消息到达队列时,它将替换前一条消息。
需要明确的是,Artemis 对 ActiveMQ 5.x 客户端(使用 OpenWire 协议)具有向后兼容性支持。
这可以通过 ActiveMQ 5.x 主题和订阅恢复策略来完成
启用此类功能时,您实际上并不需要队列。
请参阅此处的LastImageSubscriptionRecoveryPolicy:订阅恢复策略