Skip to content

brunoemferreira/NodeJS-Cron-Jobs

Repository files navigation

Logo

Agendamento de tarefas com Node Cron com exemplos

Finalizado 07/01/2021

Sobre o Node Cron   |    Conhecendo os Métodos   |    Métodos ScheduledTask   |    Sobre os Exemplos   |    Tecnologias   |    Rodando os Exemplos   |    Referências   

GitHub language count Repository size GitHub last commit

🚀 Sobre o Node Cron

O cron fornece uma maneira de repetir uma tarefa em um intervalo de tempo específico. Pode haver tarefas repetitivas, como registro e execução de backups, que precisam ocorrer diariamente ou semanalmente.

Cada asterisco que faz parte da sintaxe do cron representa diferentes unidades de tempo como mostrado abaixo :

  * * * * * *
  | | | | | |
  | | | | | Dia da Semana
  | | | | Mês 
  | | | Dia do Mês 
  | | Hora 
  | Minuto 
  Segundo ( este campo é opcional )

Tabela de valores utilizados nos asteriscos

Campo Valores
Segundo 0 - 59
Minuto 0 - 59
Hora 0 - 23
Dia do Mês 1 - 31
Mês 1 - 12
Dia da Semana 0 - 7 ( ou nomes, 0 ou 7 são Domingo )

⏲️ Passando mais de um valor por parâmetro

// Declaração da biblioteca
var cron = require ('node-cron') ; 
//  
cron.schedule ('1,2,4,5 * * * * ' , ( ) => {   
  console.log ( 'executando a cada minuto 1, 2, 4 e 5') ;
});

⏲️ Passando Intervalos de Valores

var cron = require('node-cron');
 
cron.schedule('1-5 * * * *', () => {
  console.log('Executando a cada minuto para 1 de 5');
});

⏲️ Passando Valores de Etapa

var cron = require('node-cron');
 
cron.schedule('*/2 * * * *', () => {
  console.log('Executando a tarefa a cada 2 minutos');
});

⏲️ Passando Nomes

// Usando os Nomes 
var cron = require('node-cron');
 
cron.schedule('* * * January,September Sunday', () => {
  console.log('Executando aos Domingos de Janeiro e Setembro');
});
// Usando os Nomes curtos 
var cron = require('node-cron');
 
cron.schedule('* * * Jan,Sep Sun', () => {
  console.log('Executando aos Domingos de Janeiro e Setembro');
});

⏰ Conhecendo os Métodos

Argumentos Tipo Descrição Exemplo
expression string Expressão Cron ( * * * * * * )
function Function Função que executará a Tarefa function ( ) { }
options Object Configuração opcional para agendamento das tarefas Scheduled / Timezone

Options Tipo Descrição Exemplo
scheduled boolean Define se a tarefa criada é agendada ( Padrão = True ) scheduled: true
timezone timezone Timezone que será usada para o agendamento timezone: "America/Sao_Paulo"

⏰ Métodos ScheduledTask

Iniciar um Agendamento

/* 
 * Inicia a tarefa agendada.
 */ 
var cron = require('node-cron');
 
var task = cron.schedule('* * * * *', () =>  {
  console.log('Tarefa Parada');
}, {
  // Esta valor é opcional ele por padrão vem True
  scheduled: false
});

// Inicializa o Agendamento 
task.start();

Finalizar um Agendamento

/* 
 * A tarefa não será executada a menos que seja reiniciada.
 */ 
var cron = require('node-cron');
 
var task = cron.schedule('* * * * *', () =>  {
  console.log('Executando a cada minuto até parar');
});

// Finaliza um agendamento 
task.stop();

Destruir um Agendamento

/* 
 * A tarefa será interrompida e completamente destruída
 */ 
var cron = require('node-cron');
 
var task = cron.schedule('* * * * *', () =>  {
  console.log('Não executará mais nem será capaz de reiniciar');
});

// Destrói o Agendamento 
task.destroy();

Validar um Agendamento

/* 
 * Valida se a string fornecida é uma expressão cron válida.
 */ 
var cron = require('node-cron');
 
var valid = cron.validate('59 * * * *');
var invalid = cron.validate('60 * * * *');

💎 Sobre os Exemplos

💻 Exemplo 1 - Agendamento para execução minuto à minuto

  • Nesse agendamento ao passar todos os asteriscos sem informar parâmetro algum, o cron o toma como padrão sendo assim a função que será executada dentro do schedule será executada minuto a minuto;

💻 Exemplo 2 - Agendamento de Exclusão de logs

  • Nesse agendamento a programação dele é para que todo vigésimo primeiro dia do mês ele faça a remoção do arquivo de log de erros, aqui utilizamos a biblioteca fs que faz a manipulação de arquivos com o node juntamente com o node cron para o agendamento.

💻 Exemplo 3 - Backup Agendado de Banco SQLite

  • Nesse agendamento ele faz um Backup do Banco SQLite as 23:59 diariamente, se o backup for bem sucedido ele informa uma mensagem caso contrário e apresente erro ele será encerrado, para fazer o backup do sqlite é usada a biblioteca shelljs que faz a execução de um script shell para efetuar o backup dos dados;

💻 Exemplo 4 - Agendamento de Envio de Emails

  • Nesse agendamento temos o envio de emails automáticos toda quarta-feira;
  • É criada uma criada uma variável transportadora que contenha todas as configurações para envio de email;
  • É criada uma variável com as configurações da mensagem;
  • É criado o processo de envio de email onde são instanciadas as variáveis acima, com as configurações de email e da mensagem a sere enviada, contendo um controle de erros;

⚙️ Tecnologias

⚙️ Bibliotecas

  • express - Framework para desenvolvimento Web
  • node-cron - Pacote para agendamento de tarefas
  • fs - Pacote para manipulação de arquivos
  • shelljs - Pacote para execução de comandos shell
  • nodemailer - Pacote para envio de Emails

🎲 Rodando os Exemplos

Serve para todos os exemplos :

# Clone este repositório dos exemplos ( aqui ja possui todos os exemplos )
$ git clone https://github.com/brunoemferreira/NodeJS-Cron-Jobs.git

Exemplo 1

# execute o comando
$ node example1.js

Exemplo 2

# execute o comando
$ node example2.js

Exemplo 3

# execute o comando
$ node example3.js

Exemplo 4

# execute o comando
$ node example4.js

Referências


⌨️ com ❤️ por Bruno Eduardo 😊

Releases

No releases published

Packages

No packages published