【发布时间】:2016-05-29 23:50:05
【问题描述】:
我有这些“任务”,这些“任务”由用户提交,它们访问我的 NodeJS 服务器并作为文档存储在 MongoDB 数据库中。然后这些任务也会被用户获取并一次处理一个。
- 任务具有以下状态:待处理、工作中、已完成
- 最初提交任务时,它们处于“待处理”状态。
- 当用户想要处理一项任务时,他们会以 FIFO 方式查询一个“待处理”任务。
- 向用户提供任务后,该任务会更新为“工作中”状态
我的问题是,当两个用户同时要求处理一项任务时,由于竞争条件,他们可能会获得相同的任务。虽然第一个查询尝试将任务的状态更新为“正在工作”,但第二个查询也可以获取该状态。有人可以建议我如何使用 NodeJS 和 MongoDB 来解决这个问题,其中一切都是异步的吗?也欢迎任何框架或库。
【问题讨论】: