Skip to content
Download

Agendamento

O Bunstone oferece suporte a agendamento baseado em decorators para tarefas em segundo plano.

@Timeout()

Executa um método uma vez após um atraso especificado (em milissegundos).

typescript
@Injectable()
export class TaskService {
  @Timeout(5000)
  runOnce() {
    console.log("Executado após 5 segundos");
  }
}

@Cron()

Executa um método repetidamente com base em uma expressão cron.

typescript
import { Cron } from "@grupodiariodaregiao/bunstone";

@Injectable()
export class CleanupService {
  @Cron("0 0 * * *") // Todos os dias à meia-noite
  handleCleanup() {
    console.log("Limpando banco de dados...");
  }
}

Observação: Os decorators de agendamento funcionam em qualquer classe @Injectable que esteja registrada como provider em um @Module.

Exemplo prático

Explore mais opções e configurações de agendamento:

ts
import { Module, Injectable, Cron, Timeout, AppStartup } from "../../index";

@Injectable()
class NotificationTask {
  @Cron("*/10 * * * * *") // Every 10 seconds
  handleCron() {
    console.log("[Schedule] Running periodic notification check...");
  }

  @Timeout(5000) // 5 seconds after startup
  handleTimeout() {
    console.log("[Schedule] App has been running for 5 seconds!");
  }
}

@Module({
  providers: [NotificationTask],
})
class AppModule {}

const app = await AppStartup.create(AppModule);
app.listen(3000, () => {
  console.log("Scheduling example is running on http://localhost:3000");
});

Veja no GitHub

Distribuído sob a Licença MIT.