1.0.0 • Published 3 years ago
@zg_zazumedia/node-worker v1.0.0
Node Worker
Модуль для создания масштабируемых worker'ов на NodeJS
Модуль состоит из директора и worker'ов. В директора кладутся соединения, которые могут понадобиться в работе, а так же задаются настройки количества потоков и настройки для самих worker'ов.
Параметры которые принимает директор
queueLimit:int- Ограничение очереди. Директор не будет брать из Redis больше элементов, чем указано в этом параметре. По-умолчанию равно5000keysQueueKey:str- Ключ очереди с ключами в редисе. Директор берет оттуда ключи, затем получает значения из хеша со значениями из Redis. По-умолчанию равноwriter_keysvaluesQueueKey:str- Ключ хеша со значениями в Redis. По-умолчанию равноkeysQueueKey+_valuesthreads:int- Количество worker'ов. По-умолчанию равно1dynamicThreadsOptions:obj- Опции для использования динамического формирования пулла worker'ов. По-умолчанию равноundefineddynamicThreadsOptions.workersLimit:int- Максимальное кол-во worker'ов, которое может быть сгенерировано под очередь
perWorkerLimit:int- Ограничение кол-ва элементов из очереди на каждого worker'а. При использовании динамических worker'ов, новые worker'ы будут создаваться пока на каждого worker'а не будет кол-во элементов равное или меньшее ограничению на worker'а или не будет достигнут лимит worker'ов. По-умолчанию равно1500workLoopInterval:int- Интервал с которым будет запускаться обработка очереди. Указывается в микросекундах. По-умолчанию равно1000connections:obj- Объект в котором хранятся соединения. Соединение с ключомredisобязательно. Обязательный параметрparams:obj- Объект с дополнительными параметрами, которые будут доступны в директоре по ключу, указанному в этом объектеmethods:obj- Объект с дополнительными методами, которые будут доступны в директоре по ключу, указанному в этом объектеprioritizedQueue:bool- Включить/выключить очередь с приоритетами. Приоритезация очереди определяется на моменте ее наполнения. По-умолчанию равноfalsedetailLog:bool- Включить/выключить детальные логи. По-умолчанию равноfalseonWorkSuccess(director,worker,data):function- Функция, которая вызовется когда какой-то worker' закончит обрабатывать свою очередь. Вdataпередается массив с результатами работы worker'а. Каждый результат это то, что будет передано вresolveв методе worker'aworkFunctiononWorkError(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
3 years ago