2017-02-27 150 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的官方网站:​​

希望它能帮助。