RabbitMQ plugin for Notif.me SDK.
-
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.
$ 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)
$ 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({
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.
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. |
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. |
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
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.