Skip to content

Consume and publish messages from and to broker (AMQP)

License

Notifications You must be signed in to change notification settings

WHASQ/rduk-message-broker

 
 

Repository files navigation

RDUK - message broker

Build Status Coverage Status bitHound Overall Score

Easily publish and consume messages to and from broker

Migration

from v1 to v2

  • amqplib is now a peer dependency. So, if you want to use the built-in AMQPProvider, make sure to add this module to your project.

Broker

const broker = require('@rduk/message-broker');

// publish messge to exchange
broker.publish('sms', '', {phone: '+33612345678', msg: 'does it work?'}, {
    headers: {
        prefix: '+33'
    }})
    .then(console.log)
    .catch(console.error)

// consume messages
broker.consume('sms');

Translator

In charge of translating the message from the queue before it could be consume by a processor.

Existing Translator

Processor

In charge of process the message received from the queue.

Example

const BaseProcessor = require('@rduk/message-broker/lib/processor/base');
const sms = require('@rduk/sms');
const logger = require('@rduk/logger');

class SmsProcessor extends BaseProcessor {
    constructor(translator) {
        super(translator);
    }
    run(msg) {
        return this.translator.translate(msg.content)
            .then(content => sms.getInstance().send(content.phone, content.msg))
            .catch(err => {
                logger.error(err.message);
                throw err;
            })
    }
}

Configuration

---
connections:
  -
    name: twilio
    accountSid: ${TWILIO_ACCOUNT_SID}
    authToken: ${TWILIO_AUTH_TOKEN}
broker:
  default: amqp
  providers:
    -
      name: amqp
      type: '@rduk/message-broker/lib/provider/amqp'
      address: amqp://user:password@url
  queues:
    sms:
      name: sms.fr
      headers:
        prefix: '+33'
    sms-it:
      name: sms.it
      headers:
        prefix: '+39'
  exchanges:
    sms:
      name: sms
      type: headers
      options:
          durable: true
          internal: false
          alternateExchange: sms.alt
  consumers:
    sms:
      queue: sms
      translator: '@rduk/message-broker/lib/translator/json'
      processor: '@rduk/message-broker/lib/processor/default'
sms:
  default: twilio
  providers:
    -
      name: twilio
      type: '@rduk/sms-twilio'
      connection: twilio

License and Copyright

SEE LICENSE.

About

Consume and publish messages from and to broker (AMQP)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%