prodly-amqp
v1.2.14
Published
Отправка и прием сообщений через RabbitMQ с дополнительными возможностями
Downloads
23
Readme
prodly-amqp
Экспортирует класс
prodlyAMQP
- отправка и прием сообщений через RabbitMQ, с поддержкой дополнительных функций:
- автоматическое восстановление соединения после потери связи с сервером RabbitMQ
- RPC вызовы
- Повторная обработка сообщений в случае ошибки
- Автоматическая сериализация данных в сообщениях
- Широковещательная рассылка сообщений
Установка
npm install --save prodly-amqp
API
Конструктор.
serviceName
- имя приложения/сервиса, например public
const AMQP = await new ProdlyAMQP(serviceName, {
url: process.env.AMQP_SERVER, // Адрес для подключения к RabbitMQ (например: amqp://localhost)
rpc: 'prodly_rpc', // Название Exchange для приёма RPC запросов
events: 'prodly_events', // Название Exchange для приёма сообщений
xdl: 'prodly_events.xdl', // X-Dead-Letters Exchange
ttl: 3, // Количество попыток обработки сообщений (необязательно)
delay: 30000, // Задержка между попытками обработки сообщений (необязательно)
timeout: 3000, // Таймаут по умолчанию для RPC вызовов
prefetch: 1 // Channel.prefetch (необязательно)
})
Регистрация обработчиков сообщений.
AMQP.events({
'onUserCreated'( fields, properties, data ) {
// properties.appId - содержит имя сервиса-отправителя
...
}
})
Отправка сообщения
/**
* @param {String} event - Событие
* @param {String | Number | Object | Buffer} data
* @param {Object} [options] - Дополнительные параметры
* @param {Boolean} options.important - важное сообщение
* @param {Number} options.ttl - Количество попыток доставки важных сообщений (только если important
* @param {Number} options.delay - Задержка между попытками доставки важных сообщений
* @return {Promise<void>}
*/
await AMQP.emit(event, data, options = {})
Если сообщение отмечено как important:true
, и в результае выполнения обработчика будет выброшено исключение,
то сообщение вернется в очередь на повторную обработку через options.delay
миллисекунд.
Количество попыток обработки определяется параметром options.ttl