2017-02-27 151 views
0

我正在開發一個個人項目,我希望自動化TA分配系統。我想爲此使用Node和MongoDB。雖然我對MongoDB有一些想法,但我對NodeJS是新手。 Projest的目的是做這樣的事情:nodeJS中的作業隊列

  1. 學校管理員提交他/她想要僱用TA的課程。
  2. 該數據庫已經填充符合條件的學生(超過兩個)。該領域assoc命令每個學生是[學生ID,Seniorty(大二,大三,大四),過程中所採取與否,檔次,presentStatus(Avlbl /聘用)
  3. 在任何時間點,學校管理員請求TA的一門課程,他獲得了db中最高級的合格學生。
  4. 分配學生後,他的狀態將更改爲已聘用。

我打算用隊列來實現這個。 (將該課程中的所有可用學生存儲在隊列中,並將TA-ship分配給隊列前面的高級學生)。一旦他/她被分配了一個TA,他們就會從隊列中被移除,並且將PresentStatus作爲'Hired'推回到數據庫中。我面臨的問題是,我無法理解我應該如何使用NodeJS來實現隊列的功能。在我對方法的研究,我發現相關的東西MONQ和博客,以及他們在那裏討論了苦厄(由Redis的,而不是支持)實現它,但是我仍然不能夠直觀瞭解這個想法應該使用隊列中實現的NodeJS。任何幫助,將不勝感激。

回答

1

RabbitMQ是您正在尋找的選項。

您必須創建一個消息發件人和消息使用者。消費者將有相應的隊列。一旦隊列中充滿了消息,消費者就會抓住它並執行處理。在你的場景中,它會檢查學生的狀態,然後將其更改爲數據庫中僱用的人員。你的發件人的工作是打包學生的信息並將其放入消費者的隊列中。我可以想象你的情況會發生什麼:學生提交他/她的請求。 node.js api接收它並打包信息。然後它將它發送到您的客戶隊列。如果客戶免費,您的客戶將會處理它。如果它很忙,信息將在隊列中等待。我建議您在不同的組件必須進行通信時使用json來獲取學生的信息。

這裏是RabbitMQ的官方網站:​​

希望它能幫助。