0.2.0 • Published 6 years ago

rmq-rx v0.2.0

Weekly downloads
13
License
ISC
Repository
github
Last release
6 years ago

RMQ-RX

alt cover

This library helps you send and receive messages throw RabbitMQ RX way. You can use it with JavaScript or TypeScript. Code below shows its usage with TypeScript. To connect to RMQ just import connector and call connect():

import { RMQConnector } from 'rmq-rx';

const rmqConnector: RMQConnector = new RMQConnector('logger', rmqConnectionString);

await rmqConnector.connect();

Where 'logger' is queue name and connection string is a string with amqp credentials:

`amqp://${login}:${password}@${host}`

Server

One app (lets call it server) is listening to queue, recive messages and replies:

rmqConnector.listen().subscribe((message): any => {
    switch (message.action) {
        case PostType.saveLog:
            console.log('Got save request with data:', message.data);
            rmqConnector.reply<Reply>(message.replyTo, 'ok', {
                message: 'saved'
            });
            break;
    }
});

listen() - listens to queue and gets messages with interface

export interface IMessage {
    action: any;
    data: any;
    replyTo: any;
}

action - an action that your server can execute. It is good to use it as emun. data - any data that you can describe with the interface when sending it. replyTo - queue to reply. It will be generated automatically.

reply() - replies to a client with status 'ok' or 'error' and description message.

Client

To post your action call post() function:

rmqConnector.post<SaveLog>(PostType.saveLog, {
    type: 'log',
    name: 'client',
    message: 'seve this message please',
    date: new Date()
}).subscribe(reply => {
    console.log('Got response:', reply.data);
});

SaveLog - interface which you can describe in your contract. For example:

export interface SaveLog {
    type: 'log' | 'warn' | 'error',
    name: string,
    message: string,
    date: Date
}

PostType.saveLog - action we discussed earlier. reply - a reply that server sent with interface:

export interface IReply {
    data: any;
    status: responseStatus;
}

If you want to disconnect from 'queue' just call:

rmqConnector.disconnect();
0.2.0

6 years ago

0.1.9

6 years ago

0.1.8

6 years ago

0.1.7

6 years ago

0.1.6

6 years ago

0.1.5

6 years ago

0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago