繁体   English   中英

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

[英]Using RabbitMQ (or pub/sub) for variables

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

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

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

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

我希望答案有意义。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM