(在mongo-user讨论组https://groups.google.com/d/topic/mongodb-user/i1ge4bNiMgM/discussion上询问)
嗨,我想将MongoDB用作消息队列,并考虑使用上限集合+ tailable游标来实现此目的。 我知道tailable游标可用于按插入顺序访问文档,但
由于 RG
答案 0 :(得分:9)
AOL / About.me在2012年4月的硅谷MUG上发表了关于“MongoDB as message queue”的演讲,您可能会发现有助于规划您的方法。
- 我可以对光标使用任何排序顺序吗?
- 拖尾光标是否与过滤查询一起工作(跳过一些我不想处理的文件)?如果是这样,它如何处理新文件的插入 - 只有在新文件符合查询标准时我才会收到通知吗?
醇>
一个tailable光标会对有顶集合的 end 进行尾随,并且只按自然顺序排列。如果您需要排序顺序,则需要使用索引查询。
请阅读Create Tailable Cursor文档页面以获取更多信息。
C#驱动程序是否完全支持拖尾游标?
是的,在1.1 C#驱动程序中实现了tailable游标支持(请参阅:code example)。
我希望我的队列保证单次传递 - 我的意思是如果两个客户端尝试从同一个集合中读取消息,他们就不应该“消费”相同的消息。我认为这可以通过findAndModify来实现,但是如何通过拖尾光标来实现呢?
有几种方法:
有关原子操作的更多信息,请参阅MongoDB手册中的Isolate Sequence of Operations。