notifme-sdk-queue-rabbitmq
v4.0.0
Published
RabbitMQ plugin for Notif.me SDK
Downloads
8
Readme
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 name | Type | Default | Description |
| --- | --- | --- | --- |
| keepRequestsInMemoryWhileConnecting
| boolean
| false
| Should the requests be kept in memory while queue is (re)connecting? If set to true
, may cause memory overflow. |
| url
| string
| 'amqp://localhost'
| RabbitMQ URL. See amqplib documentation. |
| amqpOptions
| Object
| {}
| Connection options. See amqplib documentation. |
| queueName
| string
| 'notifme:request'
| Name of the queue to use. |
| isPersistent
| boolean
| true
| Is the queue persistent? |
| reconnectDelaySecond
| number
| 30
| Time in second to wait between two reconnection tries. |
Consumer options
new NotifmeRabbitMqConsumer({
url: ...,
amqpOptions: ...,
queueName: ...,
isPersistent: ...,
reconnectDelaySecond: ...
})
| Option name | Type | Default | Description |
| --- | --- | --- | --- |
| url
| string
| 'amqp://localhost'
| RabbitMQ URL. See amqplib documentation. |
| amqpOptions
| Object
| {}
| Connection options. See amqplib documentation. |
| queueName
| string
| 'notifme:request'
| Name of the queue to use. |
| isPersistent
| boolean
| true
| Is the queue persistent? |
| reconnectDelaySecond
| number
| 30
| Time 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 [email protected]:[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.