xbus

simple microservice bus

Usage no npm install needed!

<script type="module">
  import xbus from 'https://cdn.skypack.dev/xbus';
</script>

README

Run xbus server

  • Use ./bin/xbus script to run mircro-services server
  • Use Service class
    const { Server } = require('xbus');
    const server = new Server();
    server.listen();

Server listen on 7011 port

Simple chat


const { Service } = require('xubs');

const chat = new Service('chat');

const user = 'Jim';

chat.on('message', message => {
    console.log(`${message.user}: ${message.text}`);
});

process.stdin.on('data', data => {
    const text = data.toString().trimRight();
    chat.emit('message', {user, text});
});

Service

Publish-Subscribe (Events)

new Service(name [, target])

    const { Service } = require('xbus');
    const service = Service('my-servise');

service.on(type, subscriber)

    service.on('add-user', function(user){
        console.log(user);
    });

service.off(type, subscriber)

    // add subscriber
    service.on('add-user', console.log);
    // remove subscriber
    service.off('add-user', console.log);

service.emit(type, event)

    const user = {id: 1, name: 'Jim'};
    service.emit('add-user', user);

Request-Response

service.listen(type, listener)

Sync listener:

    service.listen('sum', function({a, b}){
        return a + b;
    });

Async listener:

    const fs = require('fs');
    const fsPromises = fs.promises;

    service.listen('readFile', async function(fileName){
        const contents = await fsPromises.readFile(fileName);
        return contents;
    });

service.stop(type, listener)

    function sum({a, b}){
        return a + b;
    }
    // add listener
    service.listen('sum', sum);
    // remove listener
    service.stop('sum', sum);

async service.send(type, request)

    const userId = 12;
    service.send('getUser', userId)
        .then(function(user){
            console.log(user);
        })