@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);
        })

    Keywords

    Install

    npm i @johnmmackey/amqp-rpc

    DownloadsWeekly Downloads

    6

    Version

    1.0.2

    License

    ISC

    Unpacked Size

    7.41 kB

    Total Files

    3

    Last publish

    Collaborators

    • avatar