1.0.0 • Published 1 year ago

@zg_zazumedia/node-worker v1.0.0

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

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'a workFunction
  • 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 по ключу, указанному в этом объекте