4.0.0 • Published 7 years ago

notifme-sdk-queue-rabbitmq v4.0.0

Weekly downloads
4
License
MIT
Repository
github
Last release
7 years ago

Features

  • Easy integration — Just plug and play.

  • Breakdown management — Try to reconnect automatically if connection to queue is lost, and let you choose what to do with notification requests in the meantime.

  • MIT license — Use it like you want.

Getting Started

In your application

$ yarn add notifme-sdk-queue-rabbitmq
import NotifmeRabbitMqProducer from 'notifme-sdk-queue-rabbitmq/lib/producer'

const notificationService = new NotifmeRabbitMqProducer({
  url: 'amqp://localhost'
})

notificationService.enqueueNotification({
  sms: {from: '+15000000000', to: '+15000000001', text: 'Hello, how are you?'}
}).catch(console.error)

In your worker

$ yarn add notifme-sdk notifme-sdk-queue-rabbitmq
import NotifmeSdk from 'notifme-sdk'
import NotifmeRabbitMqConsumer from 'notifme-sdk-queue-rabbitmq/lib/consumer'

const notifmeSdk = new NotifmeSdk({
  /*
   * Define all your providers here.
   * (see documentation: https://github.com/notifme/notifme-sdk#2-providers)
   */
})

const notifmeWorker = new NotifmeRabbitMqConsumer(notifmeSdk, {
  url: 'amqp://localhost'
})

notifmeWorker.run(async (request) => {
  const result = await notifmeSdk.send(request)
  if (result.status === 'error') {
    /*
     * Some channels of this request have errors.
     * Which means all your providers failed for these channels.
     * Do you want to retry failing channels by enqueing to a delayed queue?
     */
  }
})

See a complete working example for more details.

How to use

Producer options

new NotifmeRabbitMqProducer({
  keepRequestsInMemoryWhileConnecting: ...,
  url: ...,
  amqpOptions: ...,
  queueName: ...,
  isPersistent: ...,
  reconnectDelaySecond: ...
})
Option nameTypeDefaultDescription
keepRequestsInMemoryWhileConnectingbooleanfalseShould the requests be kept in memory while queue is (re)connecting? If set to true, may cause memory overflow.
urlstring'amqp://localhost'RabbitMQ URL. See amqplib documentation.
amqpOptionsObject{}Connection options. See amqplib documentation.
queueNamestring'notifme:request'Name of the queue to use.
isPersistentbooleantrueIs the queue persistent?
reconnectDelaySecondnumber30Time in second to wait between two reconnection tries.

Consumer options

new NotifmeRabbitMqConsumer({
  url: ...,
  amqpOptions: ...,
  queueName: ...,
  isPersistent: ...,
  reconnectDelaySecond: ...
})
Option nameTypeDefaultDescription
urlstring'amqp://localhost'RabbitMQ URL. See amqplib documentation.
amqpOptionsObject{}Connection options. See amqplib documentation.
queueNamestring'notifme:request'Name of the queue to use.
isPersistentbooleantrueIs the queue persistent?
reconnectDelaySecondnumber30Time in second to wait between two reconnection tries.

Contributing

Contributions are very welcome!

To get started: fork this repository to your own GitHub account and then clone it to your local device.

$ git clone git@github.com:[YOUR_USERNAME]/notifme-sdk-queue-rabbitmq.git && cd notifme-sdk-queue-rabbitmq
$ yarn install

Need Help? Found a bug?

Submit an issue to the project Github if you need any help. And, of course, feel free to submit pull requests with bug fixes or changes.

4.0.0

7 years ago

3.0.1

7 years ago

3.0.0

7 years ago

2.0.0

7 years ago

1.0.1

7 years ago