@johnmmackey/amqp-rpc

1.0.2 • Public • Published

amqp-msrvlib

RPC classes for use with ampqlib.

Due to the use of ES6 features, this module requires Node.js V8 or above.

Installation

npm install @johnmmackey/amqp-rpc

RPCQueueManager Class

This class is used to manage a queue towards an RPC server. Note that under the hood, json-rpc 2.0 is used, although this is transparent to the class consumer.

const amqprc = require('@johnmmackey/amqp-rpc');

var rpcQM = new (amqprpc.RPCQueueManager)(connection, 5000);     //connection and RPC ttl for this queue
// its an event emitter - only emits 'debug' 
rpcQM.on('debug', msg => {
    winston.debug('rpcQ:', msg);
})

To send an RPC request, use the add method. Parameters are:

  • the destination queue name (string)
  • the method to invoke on the server (string)
  • parameters (any type, optional, and can be an array)
rpcQM.add('server', 'test', {a: 2})
        .then(r => {
            // response is an object
            winston.verbose('Result is', JSON.stringify(r));
        })
        .catch(err => {
            winston.error('RPC failed:', err.message);
        });

RPCServer Class

This class is used by the RPC Server.

var n = new amqprpc.RPCServer(connection, server_queue_name, callback);

The callback function must be an async function. It is invoked with two parameters - the method and params from the RPC request above.

(new amqprpc.RPCServer(connection, 'serverq', async (method, params) => {
    if (there is a problem)
        return Promise.reject(new Error('Cant do that'));
    // do some async work
    return result;
}))
    .on('debug', debug => {
		//console.log('RPCServer Debug:', debug);
	})

Readme

Keywords

Package Sidebar

Install

npm i @johnmmackey/amqp-rpc

Weekly Downloads

0

Version

1.0.2

License

ISC

Unpacked Size

7.41 kB

Total Files

3

Last publish

Collaborators

  • johnmmackey