Task Scheduling
Entropy provides a simple way to schedule tasks with CRON or interval. The task scheduling is based on simple controller methods decorated with Schedule
, Interval
and Timeout
decorators.
Defining Scheduled CRON Tasks
The example implementation of CRON-scheduled task you can see below:
src/newsletters/newsletter.controller.ts
import { Schedule } from '@entropy/scheduler'; @Controller() export class NewsletterController extends Controller { // ... @Schedule('0 30 9 * * 1-5') // Execute from Monday to Friday at 9:30am public async sendEmails() { await this.mailer.send(...); // ... } }
This task will be executed every Monday to Friday at 9:30am.
Interval Tasks
To schedule a task to be executed every n
milliseconds, you can use Interval
decorator:
src/newsletters/newsletter.controller.ts
import { Interval, TimeUnit } from '@entropy/scheduler'; @Controller() export class NewsletterController extends Controller { // ... @Interval(60 * TimeUnit.Second) // Execute every 60 seconds public checkActivity() { // Check users activity... } }
Timeout Server Startup Tasks
In order to execute a task after a certain amount of time, you can use Timeout
decorator:
src/root.controller.ts
import { Timeout, TimeUnit } from '@entropy/scheduler'; @Controller() export class RootController extends Controller { // ... // Run 7 seconds after server startup (if controller is registered in module) @Timeout(7 * TimeUnit.Second) public setupSystem() { // ... } }