@evlmaistrenko/tools-mongomq
    Preparing search index...

    @evlmaistrenko/tools-mongomq

    @evlmaistrenko/tools-mongomq

    NPM Version

    Simple messages queue (MQ) using MongoDB.

    Try to use it in case:

    • You already have MongoDB in your project
    • Need to organize some queue of tasks
    • Need queue data to be persist (i.e. not to lose messages due to restarts of application)
    • Don't want to add powerful brokers as a dependency of your project

    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`
    });