Как создать и использовать фоновые задания в node.js?
Я столкнулся с двумя libs (node -resque и node -worker), но хотел бы знать, есть ли что-то более используемое.
Как создать и использовать фоновые задания в node.js?
Я столкнулся с двумя libs (node -resque и node -worker), но хотел бы знать, есть ли что-то более используемое.
Я сделал некоторые исследования по этому вопросу, и я сделал бы это так.
Установите beanstalkd. Другая очередь сообщений НО поддерживает DELAYED PUTS. Если вы скомпилируете исходный код, это будет немного сложнее, потому что это зависит от libevent (например, memcached). Но опять же, я не думаю, что вы должны скомпилировать его из источника, потому что существует множество бинарных пакетов. Например, на Ubuntu вы можете установить beanstalkd, выполнив команду:
sudo apt-get install beanstalkd
Установите клиентскую библиотеку beanstalkd. Самый лучший, который я нашел, был node-beanstalk-client. Поскольку в списке клиентской библиотеки beanstalkd эта библиотека не упоминалась/не упоминалась (тогда снова я могу добавить записи в список, поэтому я добавлю это). Я предпочитаю эту библиотеку другим:
Итак, чтобы установить его, после того, как вы установили npm (путь записи), вы просто выполните следующую команду:
npm install beanstalk_client
var client = require('beanstalk_client').Client;
client.connect('127.0.0.1:11300', function(err, conn) {
var reserve = function() {
conn.reserve(function(err, job_id, job_json) {
console.log('got job: ' + job_id);
console.log('got job data: ' + job_json);
console.log('module name is ' + JSON.parse(job_json).data.name);
conn.destroy(job_id, function(err) {
console.log('destroyed job');
reserve();
});
});
}
reserve();
});
Сначала запустите пользователя:
node consumer.js
Следующий старт producer.js
. Пять секунд (задержка, указанная мной) после выполнения producer.js
, consumer.js
обработает сообщение.
var client = require('beanstalk_client').Client;
client.connect('127.0.0.1:11300', function(err, conn) {
var job_data = {"data": {"name": "node-beanstalk-client"}};
var priority = 0;
var delay = 5;
var timeToRun = 1;
conn.put(priority, delay, timeToRun, JSON.stringify(job_data), function(err, job_id) {
console.log('put job: ' + job_id);
process.exit();
});
});
чтобы начать только выпуск:
node producer.js
Я использую Kue.
Kue - это очередь приоритетных заданий для функций node.js, поддерживаемая redis. Ключевой особенностью Kue является его чистый пользовательский интерфейс для просмотра и управления очередными, активными, неудачными и завершенными заданиями.