rmq-rx
v0.2.0
Published
NodeJS library for RMQ connection RX way
Downloads
9
Readme
RMQ-RX
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();