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
@Injectableque esteja registrada comoproviderem 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");
});