如何在 Apache ActiveMQ“经典”中仅获取组中的最后一条消息?

问题描述 投票:0回答:2

场景: 用户正在进行长时间测验。每次互动后,我都会将当前分数和位置存储在测验中。我只想在数据库中存储用户在当前启动期间所做的last交互。

现在我通过 Redis 实现了这一点,每次我存储最后一次交互时,我都会覆盖前一个交互。

这可以通过 Apache 的 ActiveMQ“经典”来实现吗?每个用户都可以对其消息进行分组,而我只使用组中收到的最后一条消息?

redis architecture activemq message-queue messagebroker
2个回答
1
投票

我不知道在 ActiveMQ 5.x 中是否有任何自动化方法来执行此操作,但您可以使用 “最后一个值”队列使用 ActiveMQ Artemis 来完成此操作。此功能允许您将消息上的特殊属性设置为特定值,并且每当具有相同属性值的另一条消息到达队列时,它将替换前一条消息。

需要明确的是,Artemis 对 ActiveMQ 5.x 客户端(使用 OpenWire 协议)具有向后兼容性支持。


0
投票

这可以通过 ActiveMQ 5.x 主题和订阅恢复策略来完成

启用此类功能时,您实际上并不需要队列。

请参阅此处的LastImageSubscriptionRecoveryPolicy订阅恢复策略

© www.soinside.com 2019 - 2024. All rights reserved.