/custom-rabbitmq

This NPM module provides a plug and play functionality for RabbitMQ Producers and Consumers.

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

custom-rabbitmq

This NPM module provides a plug and play functionality for RabbitMQ Producers and Consumers.

Installation

Run npm -i custom-rabbitmq in your command line.

To initialize construtor you need rQCluster config like below

let rq_cluster = {
  RABBITMQ: {
      CONNECT_STRING: 'amqp://guest:guest@localhost:5672?heartbeat=60', //Your RabbitMQ Server instead of localhost
      RETRY_INTERVAL: 5000, // Retry time in milliseconds
  }
}

Every rabbitmq queue must have config for each pair of producer and consumer. You can set the different parameters of the configuration according to your needs. It would somewhat look like:

let myConf = {
  QUEUE: {
    NAME: 'q_name', // Queue name
    PREFETCH: 1, // prefetch count
    OPTIONS: {
      exclusive: false,
      durable: true,
      autoDelete: false
    },
    CONSUMEOPTS: {
      noAck: false
    },
    BINDINGKEY: 'binding.key.*',

    KEY: 'binding.key.*',

    EXCHANGE_OPTS: {
      NAME: 'ex_name', // Name of exchange
      TYPE: 'topic',
      OPTIONS: {
        durable: true,
        internal: false,
        autoDelete: false
      }
    }
  }
}

To construct producer or consumer with the rabbitmq configuration, simply use the below code:

let consumerConstructor = require('./rqueue/consumer')(rq_cluster);
let producerConstructor = require('./rqueue/producer')(rq_cluster);

Initialize a constructor like below

let myConsumer = new consumerConstrutor(myConf.QUEUE.EXCHANGE_OPTS, myConf.QUEUE, {}, fulfillMentFunction)

Here, the fulfilmentFunction is a callback function with the signature function fulfillMentFunction(error, payload). In simpler terms, this is the function that will read the message from the queue and be executed for each message in the queue. So for example,

function fulfilmentFunction(error, payload){
    console.log('Hi, new message ', payload);
    /***
     * Do
     * Some
     * Stuff
     * */
};

Initialize a producer like below

let myProducer = new producerConstructor(myConf.QUEUE.EXCHANGE_OPTS, myConf.QUEUE.BINDINGKEY);

Simply push a message into the queue, by using the following syntax

myProducer.publish({
    'key': 'value',
    'key1': 'value1',
    /***
     * More keys here
     * */
});