Example that demonstrates super basic database based event scheduling.
- Copy
.env.example
to.env
and update postgres database dsn. - Run
go run .
Basically,
- When we want to schedule a job, we add to database
scheduler.Schedule("SendEmail", "mail: nilkantha.dipesh@gmail.com", time.Now().Add(1*time.Minute))
- Another go routine is always looking for jobs to execute (that has time expired) in the given interval.
scheduler.CheckEventsInInterval(ctx, time.Minute)
Output looks like;
2021/01/16 11:58:49 πΎ Seeding database with table...
2021/01/16 11:58:49 π Scheduling event SendEmail to run at 2021-01-16 11:59:49.344904505 +0545 +0545 m=+60.004623549
2021/01/16 11:58:49 π Scheduling event PayBills to run at 2021-01-16 12:00:49.34773798 +0545 +0545 m=+120.007457039
2021/01/16 11:59:49 β° Ticks Received...
2021/01/16 11:59:49 π¨ Sending email with data: mail: nilkantha.dipesh@gmail.com
2021/01/16 12:00:49 β° Ticks Received...
2021/01/16 12:01:49 β° Ticks Received...
2021/01/16 12:01:49 π² Pay me a bill: paybills: $4,000 bill
2021/01/16 12:02:49 β° Ticks Received...
2021/01/16 12:03:49 β° Ticks Received...
^C2021/01/16 12:03:57
β Interrupt received closing...