2013-10-17 46 views
0

我需要從後端(Django)到流星的交付更改。通過RabbitMQ來做到這一點,在Meteor的方面,我使用了npm的amqp。我發送有關訂單的信息,有時訂單可以將狀態更改爲「關閉」,這意味着我需要將其從Meteor集合中刪除。但是當負載增加時,有時'接近'動作會早早收到,然後創建,並且我在後端和前端之間存在差異。 可以在流星端的一個線程啓動amqp監聽器嗎?或者我可以如何解決這個問題?如何正確實現Meteor的RabbitMQ隊列?

回答

2

你有2個選擇這裏:

  1. 不要立即從集合中刪除文件,但它們標記爲「關閉」。在這種情況下,客戶端只會隱藏未封閉的文檔。您可以定期刪除舊的&已關閉的文檔,或者經過一段時間後(例如通過使用Meteor.setTimeout)

  2. 在流星端創建一個沒有相應文檔的「關閉」操作隊列。然後,在創建新文檔時,檢查隊列是否應立即關閉。

1

你有沒有想過在你的流星應用程序中使用smart-collections,你可以直接更新您的MongoDB收藏在你的Python代碼,並有變動直接傳播到您的流星應用,省去了排隊的消息的需要。

我讀過幾個地方的智能集合比Meteor的集合實現快得多,因爲它使用oplog。它也將很快在覈心中實施。

+0

當您直接更新數據庫時,您已經丟失了動畫,並且更新從輪詢開始,這大約需要3秒鐘。 – Denis