@db3dev/rabbitmq-rpc-server

An AMQP/RabbitMQ RPC server controller

Usage no npm install needed!

<script type="module">
  import db3devRabbitmqRpcServer from 'https://cdn.skypack.dev/@db3dev/rabbitmq-rpc-server';
</script>

README

amqp-rpc-server-controller

A server controller for receiving RPC requests over AMQP and RabbitMQ.

This server makes use of RxJs Observables for connection events.

Creating An Action Function

Your action function requires two parameters to be successful:

1) message
2) callback

Message is what is being sent to the server and callback should be called with a return message for the requester.

Responses are expected to be an Object and is then sent out as a buffer.

Connecting To Server

// Call when RPC is received
function rpcAction(rpcMessage, callback) {
    // Arbitrary Action to take with Requester's Message
    console.log(rpcMessage);
    
    // Send Response To Requester
    callback({ resp: 'Success!' });
}

// Require Server Module
var Config = require('@db3dev/rabbitmq-rpc-server').Config,
    Server = require('@db3dev/rabbitmq-rpc-server').Server;

// Configure Server to Connect to RabbitMQ Server
var config = new Config({
    username: 'user',
    password: 'password',
    host: 'example.com',
    vhost: 'vhost',
    queueName: 'rpc_api'
});

// Instantiate Server
var server = new Server(config);

// Attempt to connect to server
server.connect(rpcAction); // returns a promise
    .then((rabbitmq_channel) => {
        ... // Post connection actions.
    })
    .catch((err) => {
        // Handle errors
        console.log(err)
    });