我正在创建一种后台作业队列系统,使用 MongoDB 作为数据存储。在派生工作人员来处理作业之前,如何“侦听”对 MongoDB 集合的插入?
我是否需要每隔几秒轮询一次以查看与上次相比是否有任何更改,或者我的脚本是否可以等待插入发生?
这是我正在开发的一个 PHP 项目,但请随意用 Ruby 或与语言无关的语言来回答。
你所想到的听起来很像触发器。 MongoDB 不支持任何触发器,但是有些人使用一些技巧“推出了自己的触发器”。这里的关键是oplog。
当您在副本集中运行 MongoDB 时,所有 MongoDB 操作都会记录到操作日志(称为 oplog)中。 oplog 基本上只是对数据所做的修改的运行列表。副本集通过侦听此 oplog 上的更改然后在本地应用更改来实现功能。
这听起来很熟悉吗?
我无法在这里详细说明整个过程,它有几页文档,但您需要的工具都可用。
首先在oplog上写一些文章
-简要描述;简介 https://docs.mongodb.com/manual/core/replica-set-oplog/
- 布局local收藏 https://docs.mongodb.com/manual/reference/local-database/(其中包含 oplog)
您还想利用可尾游标 https://docs.mongodb.com/manual/core/tailable-cursors/。这些将为您提供一种监听更改而不是轮询更改的方法。请注意,复制使用可尾游标,因此这是受支持的功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)