GithubHelp home page GithubHelp logo

rpc-amqp's Introduction

rpc-amqp

node.js library for cross-application communication via amqp.

#Setup

Install the dependency:

npm install rpc-amqp

Require it in your application:

var RPC = require('rpc-amqp');

#Usage

To make the library working you need to have a default installation of RabbitMQ message broker: https://www.rabbitmq.com/download.html

##Client

Create a client object to send and receive RPCs (multiple objects could be created within the same scope):

var client = RPC.create();

##Connection

You can establish a connection to a default localhost with guest:guest credentials:

client.connect();

Or customize your connection with parameters:

client.connect({
    host: 'localhost',
    port: 5672,
    username: 'guest',
    password: 'guest'
});

##Ready

When the library connects to the broker and makes all preparations it emits ready event. At this point you can start registering callbacks and send RPCs:

client.on('ready', function() {
    // messages sending and callbacks registration here
});

##Workflow

The workflow consists of sending, receiving and returning the result:

  • to send a call you invoke call method on your client.
  • to receive a call you implement a callback function with client's register.
  • to return a result you pass a result object to callback function in register.

###client.call(name[,params][,options][,callback])

Makes a call with specified params and options. If there is a callback registered in the system the callback with a result will be returned.

  • name: name of the call that should be invoked remotely.
  • params: parameters of the call that will be passed to the remote consumer.
  • options: options that define the behaviour (like roles and routes) of the call. Allow to customize the call and
  • callback: callback function that will be invoked when the remote consumer replies with a result.

Here is an example of client.call usage:

sender.call('getRandomNumber', {}, {}, function(result){
    console.log(result);
});

###client.register(name[, callback])

Registers an RPC by a specified name. You can return a result object to the sender by calling callback.

  • name: name of the call that the client should reply to.
  • callback: function that could be called in if you want to reply with a result.

Here is an example of client.register that can listen to the call sent in the previous example (getRandomNumber):

client.register('getRandomNumber', function (params, response) {
    var number = Math.random();

    response(number);
});

#Routing

##Path

##ID

##Roles

#Examples

01 Basic - Random Number

02 Roles - Multiple Servers

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.