RabbitMQ plugin for Notif.me SDK.
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({
})
const notifmeWorker = new NotifmeRabbitMqConsumer(notifmeSdk, {
url: 'amqp://localhost'
})
notifmeWorker.run(async (request) => {
const result = await notifmeSdk.send(request)
if (result.status === 'error') {
}
})
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 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.