0

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

4

2 回答 2

2

您在这里有 2 个选项:

  1. 不要立即从集合中删除文档,而是将它们标记为“关闭”。在这种情况下,客户将只订阅未关闭的文档。您可以定期删除旧的和关闭的文档,或者在一些延迟之后(即使用 Meteor.setTimeout)

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

于 2013-11-25T08:51:28.367 回答
1

您是否考虑过在您的 Meteor 应用程序中使用智能集合,您可以直接在 Python 代码中更新您的 MongoDB 集合,并将更改直接传播到您的 Meteor 应用程序,从而消除对消息队列的需要。

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

于 2013-11-25T19:15:49.187 回答