1.0.0 • Published 1 year ago
@zg_zazumedia/node-worker v1.0.0
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 по ключу, указанному в этом объекте
1.0.0
1 year ago