NodeJs Bull для фоновых задач

Я использую Bull для фоновых задач в своем приложении node.

https://github.com/OptimalBits/bull

Теперь этот узел является однопоточным по своей природе. Использует ли бык тот же поток, в котором работает приложение node, или он разветвляет другой поток и работает как отдельный экземпляр?


person Ijaz Khan    schedule 28.10.2019    source источник


Ответы (1)


Из краткого руководства по быку:

Функцию процесса также можно выполнять1 в отдельном процессе. Это имеет несколько преимуществ:

  • Процесс находится в песочнице, поэтому в случае сбоя он не влияет на работника.
  • Вы можете запустить блокирующий код, не затрагивая очередь (задания не будут останавливаться).
  • Лучшее использование многоядерных процессоров.
  • Меньше подключений к Redis.

Для того, чтобы использовать эту функцию, просто создайте отдельный файл с процессором:

// processor.js
module.exports = function(job){
  // Do some heavy work

  return Promise.resolve(result);
}

И определите процессор следующим образом:

// Single process:
queue.process('/path/to/my/processor.js');

// You can use concurrency as well:
queue.process(5, '/path/to/my/processor.js');

// and named processors:
queue.process('my processor', 5, '/path/to/my/processor.js');

1. Это указывает на то, что, естественно, бык не создает отдельный процесс для выполнения.

Основные руководства: https://github.com/OptimalBits/bull#separate-processes

person some user    schedule 21.01.2020