Re-runnable jobs (ou “tarefas re-executáveis”) em Web APIs são operações ou tarefas que podem ser configuradas e armazenadas antecipadamente, para serem executadas em um momento posterior.
Esse conceito é especialmente útil em cenários onde a mesma operação precisa ser realizada várias vezes, talvez com diferentes parâmetros ou em diferentes contextos. Vamos detalhar este conceito com base no conhecimento disponível e fornecer um exemplo.
O que são Re-runnable Jobs?
-
Definição e Configuração Prévia: Re-runnable jobs são operações definidas e configuradas antecipadamente. Elas incluem todas as informações necessárias para sua execução, como parâmetros e configurações específicas.
-
Execução Posterior: Uma vez configuradas, estas tarefas podem ser acionadas para execução em momentos específicos, conforme necessário.
-
Uso de Custom Methods: Re-runnable jobs ==geralmente são implementadas usando custom methods em Web APIs. O método customizado pode ser algo como
:run, que dispara a execução da tarefa.==
Como Devem Ser Usados?
-
Criação e Configuração: Primeiramente, a tarefa re-executável é criada e configurada com todos os parâmetros e definições necessárias.
-
Armazenamento: A tarefa é armazenada no sistema, pronta para ser acionada.
-
Execução: Quando necessário, a tarefa pode ser acionada através de uma chamada de API específica, que utiliza um custom method para iniciar a execução.
Exemplo de Implementação
Vamos considerar um exemplo simples de um job re-executável para enviar um relatório por e-mail:
-
Definição do Job: Suponha que temos um job chamado
SendReportJob, que envia um relatório específico por e-mail. Este job é configurado com informações sobre o relatório a ser enviado e o endereço de e-mail do destinatário.public class SendReportJob { private String reportId; private String emailAddress; // Construtor, getters e setters } -
Método Customizado para Execução: Para executar este job, podemos ter um endpoint de API como
/jobs/sendReport:run.@PostMapping("/jobs/sendReport:run") public ResponseEntity<String> runSendReportJob(@RequestBody SendReportJob job) { // Lógica para enviar o relatório return ResponseEntity.ok("Relatório enviado com sucesso"); } -
Acionamento do Job: O cliente da API pode então fazer uma solicitação POST para este endpoint com os detalhes necessários para enviar o relatório.
POST /jobs/sendReport:run { "reportId": "123", "emailAddress": "example@example.com" } -
Flexibilidade: Esta abordagem permite que o mesmo job seja reutilizado para enviar diferentes relatórios para diferentes destinatários, simplesmente passando diferentes parâmetros a cada execução.
Benefícios dos Re-runnable Jobs
- Reusabilidade: Permite reutilizar a mesma lógica de operação em diferentes contextos e com diferentes parâmetros.
- Flexibilidade e Eficiência: Facilita a automação de tarefas recorrentes e a realização de operações complexas de maneira eficiente.
- Manutenção e Organização: Melhora a organização do código e facilita a manutenção ao separar a definição da execução das tarefas.
Re-runnable jobs, portanto, são uma forma poderosa de estruturar operações em Web APIs, proporcionando um meio eficiente de gerenciar tarefas recorrentes e complexas.