如何用Meteor正确实现RabbitMQ队列?

时间:2013-10-17 07:27:28

标签: meteor rabbitmq amqp

我需要从后端(Django)到Meteor的交付更改。通过RabbitMQ做到这一点,在Meteor的一侧,我使用了来自npm的amqp。我发送有关订单的信息,有时订单可以将状态更改为“关闭”,这意味着我需要将其从Meteor集合中删除。但是当负载增加时,有时“关闭”动作会在早期恢复,然后它会创建,并且我在后端和前端之间存在差异。 是否可以在流星端的一个线程上启动amqp监听器。或者我如何能够对抗这个问题呢?

2 个答案:

答案 0 :(得分:2)

这里有2个选项:

  1. 不要立即从集合中删除文档,而是将其标记为“已关闭”。在这种情况下,客户端将仅对未闭合的文档进行subcibe。你可以删除旧的&定期关闭文件,或经过一些延迟(即使用Meteor.setTimeout)

  2. 在流星方面,创建一个没有相应文档的“关闭”操作队列。然后,在创建新文档时,检查队列是否应立即关闭。

答案 1 :(得分:1)

您是否考虑过在Meteor应用程序中使用smart-collections,您可以直接在Python代码中更新MongoDB Collection,并将更改直接传播到Meteor应用程序,从而无需使用消息队列。 / p>

我在一些地方读过,Smart Collections比Meteor的Collection实现快得多,因为它使用了oplog。它也将很快在核心实施。