我想获得有关Node.js中MongoDB数据库更改的实时更新.
单个MongoDB更改流几乎立即发送更新通知.但是当我打开多个(10+)流时,数据库写入和通知到达之间会有大量延迟(最多几分钟).
这就是我设置更改流的方式:
let cursor = collection.watch([
{$match: {"fullDocument.room": roomId}},
]);
cursor.stream().on("data", doc => {...});
Run Code Online (Sandbox Code Playgroud)
我尝试了另一种设置流的方法,但它同样慢:
let cursor = collection.aggregate([
{$changeStream: {}},
{$match: {"fullDocument.room": roomId}},
]);
cursor.forEach(doc => {...});
Run Code Online (Sandbox Code Playgroud)
自动化流程将微小文档插入到集合中,同时收集性能数据.
一些额外的细节:
insertMany
)两种设置都会产生同样的问题.这可能会发生什么?
aed*_*edm 35
MongoDB的Node.js客户端中的默认连接池大小为5.由于每个更改流游标都打开一个新连接,因此连接池必须至少与游标数一样大.
const mongoConnection = await MongoClient.connect(URL, {poolSize: 100});
Run Code Online (Sandbox Code Playgroud)
(感谢MongoDB Inc.调查此问题.)
归档时间: |
|
查看次数: |
3429 次 |
最近记录: |