使用RabbitMQ(或pub / sub)作为变量

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

我有一个事件(比如活动),可能在给定时间有效或无效。我正在寻找一种方法来使用RabbitMQ来判断事件是否有效。我知道RabbitMQ的用例是pub / sub。如何使用RabbitMQ来判断事件当前是否处于活动状态。更像是一个实时更新的变量。我知道我可以使用Firebase数据库实现这一目标;但有什么办法可以用RabbitMQ做到吗?如果不是RabbitMQ,还有其他建议吗?我不能使用mySQL等因为那不是实时的。

rabbitmq publish-subscribe
2个回答
0
投票

使用RabbitMQ可以完成的一种方法 - 尽管很奇怪 - 使用expiring / autoDelete队列作为记录。

您可以使用expires选项断言队列,这意味着在x毫秒不使用后将其删除。然后,您只需检查队列是否存在。如果存在,则事件处于活动状态(如果事件未激活)。

如果您的事件活动/非活动状态更加动态,您还可以使用autoDelete选项创建队列并将一些假消费者挂钩。只要消费者存在,队列就会存在,因此删除队列只需停止消费者。

我希望答案有意义。


0
投票

RabbitMQ是一个消息代理,它不适合在分布式系统中表示状态。

为此,我宁愿推荐任何提供事务(SQL或NoSQL)的存储解决方案,因为您确实希望确保数据是自动设置的。

Redis,MongoDB,PostgreSQL等解决方案都能满足您的需求。如今,云提供商提供与托管服务类似的解决方案。

如果访问状态的延迟在您的应用程序中至关重要(如果这是“实时”的意思),那么您需要仔细考虑您的体系结构。由于状态将存储在远程位置(无论是RabbitMQ,Redis还是其他任何东西),网络延迟和它的(非)可靠性将是最重要的因素。

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