@zg_zazumedia/node-worker
v1.0.0
Published
Queue worker
Downloads
2
Readme
Node Worker
Модуль для создания масштабируемых worker'ов на NodeJS
Модуль состоит из директора и worker'ов. В директора кладутся соединения, которые могут понадобиться в работе, а так же задаются настройки количества потоков и настройки для самих worker'ов.
Параметры которые принимает директор
queueLimit:int
- Ограничение очереди. Директор не будет брать из Redis больше элементов, чем указано в этом параметре. По-умолчанию равно5000
keysQueueKey:str
- Ключ очереди с ключами в редисе. Директор берет оттуда ключи, затем получает значения из хеша со значениями из Redis. По-умолчанию равноwriter_keys
valuesQueueKey:str
- Ключ хеша со значениями в Redis. По-умолчанию равноkeysQueueKey+_values
threads:int
- Количество worker'ов. По-умолчанию равно1
dynamicThreadsOptions:obj
- Опции для использования динамического формирования пулла worker'ов. По-умолчанию равноundefined
dynamicThreadsOptions.workersLimit:int
- Максимальное кол-во worker'ов, которое может быть сгенерировано под очередь
perWorkerLimit:int
- Ограничение кол-ва элементов из очереди на каждого worker'а. При использовании динамических worker'ов, новые worker'ы будут создаваться пока на каждого worker'а не будет кол-во элементов равное или меньшее ограничению на worker'а или не будет достигнут лимит worker'ов. По-умолчанию равно1500
workLoopInterval:int
- Интервал с которым будет запускаться обработка очереди. Указывается в микросекундах. По-умолчанию равно1000
connections:obj
- Объект в котором хранятся соединения. Соединение с ключомredis
обязательно. Обязательный параметрparams:obj
- Объект с дополнительными параметрами, которые будут доступны в директоре по ключу, указанному в этом объектеmethods:obj
- Объект с дополнительными методами, которые будут доступны в директоре по ключу, указанному в этом объектеprioritizedQueue:bool
- Включить/выключить очередь с приоритетами. Приоритезация очереди определяется на моменте ее наполнения. По-умолчанию равноfalse
detailLog:bool
- Включить/выключить детальные логи. По-умолчанию равноfalse
onWorkSuccess(director,worker,data):function
- Функция, которая вызовется когда какой-то worker' закончит обрабатывать свою очередь. Вdata
передается массив с результатами работы worker'а. Каждый результат это то, что будет передано вresolve
в методе worker'aworkFunction
onWorkError(director,worker,error):function
- Функция, которая вызовется когда какой-то worker поймает ошибку в процессе обработки очереди.itemBeforePushToQueue(item):function
- Функция препроцессинга эелемнта очереди. Пример когда в очереди лежатjson
элементы:
new Director({
itemBeforePushToQueue(item) {
return JSON.parse(item);
},
});
logger:obj
- Объект логгера. Должен иметь методыinfo
иerror
. Внутри методов worker'а к нему можно обращаться черезworker.director.logger
. По-умолчанию равен
{
info(){
console.log(...arguments);
},
error(){
console.error(...arguments)
}
}
workerOptions:obj
- Объект с настройками worker'овworkerOptions.workFunction(worker,item):async function
- Функция работы worker'a. Должна возрващатьPromise
. Обязательный параметр. То что будет передано вresolve
этогоPromise
будет являтся результатом работы worker'a и будет передано в массиве результатов директору в методonWorkSuccess
workerOptions.onWorkError(worker,item,error):function
- Функция, которая вызовется еслиworkFunction
отклонитPromise
workerOptions.params:obj
- Объект с дополнительными параметрами, которые будут доступны в worker'e по ключу, указанному в этом объектеworkerOptions.methods:obj
- Объект с дополнительными методами, которые будут доступны в worker'e по ключу, указанному в этом объекте