议程在使用现有Mongodb连接实例化时,没有运行作业定义



在初始化议程实例时,我使用已经连接的mongodb客户端实例,而不是使用mongodb连接字符串。我面临的问题是议程上的一份文件。每个都被添加到集合中,但是当达到指定的时间时,作业定义不会运行。这个问题只会在我使用一个已经连接的mongo客户端实例时发生,否则当我让议程处理连接时它会正常工作。

我还注意到,当ram使用超过85%+容量时,它会导致MongoNetworkError。如果有人遇到类似的问题并找到了解决方案,请将答案贴在上面。

`agenda.then((agendaTmp: any) => {
console.log("Received: ", agendaTmp.status);
agendaTmp.agenda.define("test3", {}, (job: any, done: any) => {
console.log("New agendaTmp schedule running");
done();
});
agendaTmp.agenda.on("ready", async () => {
console.log("Ready: ");
agendaTmp.agenda.every("*/1 * * * *", "test3", {});
await agendaTmp.agenda.start();
});
}
// Agenda init file
import { Agenda } from "agenda";
import { MongoClient } from "mongodb";
const agenda = new Promise((resolve, reject) => {
const client = new MongoClient(dbURL);
client
.connect()
.then(() => {
const database = client.db("scheduler");
const collection = database.collection("newNotification");

collection.findOne({}).then((result) => {
console.log("In mongo query: ", result);
});
let agendaTmp = new Agenda({
processEvery: "40 seconds",
});
agendaTmp.mongo(database, "newNotification");
return resolve({"agenda":agendaTmp, "status":true});
})
.catch(() => {
return reject(false);
});
});
export {agenda};`

我们的团队最终可以解决这个问题:

  1. 当与现有的Mongodb连接实例化时,发现在示例应用程序中工作。

  2. 对于MongoNetworkError的高内存使用率,使用'useUnifiedTopology'选项:new Agenda({ db: { address: mongoDbUrl, collection: "newNotification", options: { useUnifiedTopology: true } }, processEvery: "40 seconds"});