@alicilin/node-mmqdeprecated

node.js inter-microservice messaging

Usage no npm install needed!

<script type="module">
  import alicilinNodeMmq from 'https://cdn.skypack.dev/@alicilin/node-mmq';
</script>

README

Message Queue System on Mongodb & Redis

'use strict';
const Daemon = require('./Daemon');
const MMQ = require('./MMQ');
const Worker = require('./Worker');
let moptions = [
    'mongodb://localhost:27017', 
    { 
        auth: { 
            username: 'root', 
            password: 'test123' 
        }, 
        useNewUrlParser: true, 
        useUnifiedTopology: true 
    }
];

let roptions = [
    { 
        host: 'localhost', 
        port: 6379,
        key: 'mrqueue' 
    }
];

const server = new Daemon({ mongo: moptions, redis: roptions, port: 8080, secret: 'mmq-123', });
const mmq1 = new MMQ({ servicename: 'master', channel: 'test', ip: 'localhost', port: 8080, secret: 'mmq-123' });
const mmq2 = new MMQ({ servicename: 'child', channel: 'test', ip: 'localhost', port: 8080, secret: 'mmq-123' });

async function main() {
    await server.start();
    
    for (let i = 1; i < 10; i++) {
        await mmq1.send({ service: '*', event: 'worked', retry: 15, data: { message: 'okeyyyy - ' +i } });
    }

    setTimeout(() => (mmq1.send({ service: '^chil', event: 'worked', retry: 15, data: { message: 'okeyyyy lets go' } })), 3 * 1000);
    let worker = new Worker({ MMQI: mmq2 });
    worker.on('worked', async (data, unlock) => {
        // (await (new Promise(r => setTimeout(r, 1000))));
        console.log(data.data.message, 'worker 1');
        await new Promise(r => setTimeout(unlock, 1000));
    });
    
    worker.start();
}

main()