Simple messages queue (MQ) using MongoDB.
Try to use it in case:
Features:
npm i @evlmaistrenko/tools-mongomq
import * as mongoMq from "@evlmaistrenko/tools-mongomq";
import { MongoClient } from "mongodb";
const client = new MongoClient("<your connection string>");
await client.connect();
const messages = client
.db("<your database name>")
.collection("<your collection name>");
const queue = new mongoMq.Queue(messages);
// Publishing messages:
await queue.publish({ some: "value" });
// Publishing delayed messages:
await queue.publish(
{ some: "other value" },
new Date("2099-12-30T19:00:00.000Z"),
);
// Consuming messages concurrently:
for await (let consume of queue.messages())
consume(async (message) => {
// do something with `message.payload`
}).catch((error) => {
// process `error`
});
// With specified concurrency:
for await (let consume of queue.messages(5))
consume(async (message) => {
// do something with `message.payload`
}).catch((error) => {
// process `error`
});