Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
September 16, 2021 06:02 am GMT

Membuat Penjadwalan Otomatis (Cron Job Scheduler) menggunakan Golang

Terkadang dalam sebuah aplikasi, ada tugas-tugas yang perlu dijalankan otomatis sesuai jadwal yang telah ditentukan. Contohnya, ketika kita menerima email otomatis yang berisi ucapan tahun baru, notifikasi agenda setiap hari kerja jam 8 pagi, tagihan setiap bulan tanggal 10 jam 9 pagi, cek pesanan baru setiap 10 menit, dan lainnya. Artikel ini akan membahas bagaimana cara membuat penjadwalan otomatis menggunakan golang.

Bagaimana penjadwalan otomatis dilakukan pada server?

Pada artikel ini, penjadwalan otomatis akan dilakukan pada server berbasis Linux dengan menggunakan cron. Cron adalah sebuah command Linux untuk menjalankan script secara terjadwal.

Di bawah ini adalah cara mengatur penjadwalan pada crontab.

* * * * * perintah yang akan dieksekusi    | | | | || | | | + day of week (0  7) (Sunday=0)| | | +- month (1  12)| | + day of month (1  31)| + hour (0  23)+- min (0  59)

Contoh:

  1. Email otomatis untuk ucapan tahun baru jam 12 malam
    0 0 1 1 * /home/user/automail-new-year.sh

  2. Email otomatis tagihan setiap bulan tanggal 10 jam 7 pagi
    0 07 10 * * /home/user/automail-billing.sh

  3. Notifikasi agenda setiap hari kerja (Senin-Jumat) jam 9 pagi
    0 09 * * 1-5 /home/user/notification-daily-agenda.sh

  4. Notifikasi pesanan baru setiap 10 menit sekali
    */10 * * * * /home/user/notification-new-order.sh

Ya, saya sudah memahami cron. Bagaimana cara implementasi pada Go?

Setelah melakukan pencarian terhadap beberapa package go terkait scheduler, saya memilih package robfig/cron v3. Cara implementasinya cukup sederhana. Mari kita lihat bersama.

package mainimport (   "fmt"   "os"   "os/signal"   "syscall"   "time"   cron "github.com/robfig/cron/v3")func main() {   // set scheduler berdasarkan zona waktu sesuai kebutuhan   jakartaTime, _ := time.LoadLocation("Asia/Jakarta")    scheduler := cron.New(cron.WithLocation(jakartaTime))   // stop scheduler tepat sebelum fungsi berakhir   defer scheduler.Stop()   // set task yang akan dijalankan scheduler   // gunakan crontab string untuk mengatur jadwal   scheduler.AddFunc("0 0 1 1 *", func() { SendAutomail("New Year") })   scheduler.AddFunc("0 07 10 * *", SendMonthlyBillingAutomail)   scheduler.AddFunc("0 09 * * 1-5", NotifyDailyAgenda)   scheduler.AddFunc("*/10 * * * *", NotifyNewOrder)   // start scheduler   go scheduler.Start()   // trap SIGINT untuk trigger shutdown.   sig := make(chan os.Signal, 1)   signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)   <-sig}func SendAutomail(automailType string) {    // ... instruksi untuk mengirim automail berdasarkan automailType    fmt.Printf(time.Now().Format("2006-01-02 15:04:05") + " SendAutomail " + automailType + " telah dijalankan.
")}func SendMonthlyBillingAutomail(){ // ... instruksi untuk mengirim automail berisi tagihan fmt.Printf(time.Now().Format("2006-01-02 15:04:05") + " SendMonthlyBillingAutomail telah dijalankan.
")}func NotifyDailyAgenda(){ // ... instruksi untuk mengirim notifikasi agenda harian fmt.Printf(time.Now().Format("2006-01-02 15:04:05") + " NotifyDailyAgenda telah dijalankan.
")}func NotifyNewOrder(){ // ... instruksi untuk mengecek pesanan baru, lalu mengirimkan notifikasi fmt.Printf(time.Now().Format("2006-01-02 15:04:05") + " NotifyNewOrder telah dijalankan.
")}

Setelah itu, kita jalankan function Main.

go run main.go

Lalu, amati hasilnya.

2021-09-16 09:00:00 NotifyDailyAgenda telah dijalankan.2021-09-16 12:30:00 NotifyNewOrder telah dijalankan.2021-09-16 12:40:00 NotifyNewOrder telah dijalankan.

Penjadwalan otomatis dengan golang sudah berhasil dibuat.

Selanjutnya

Berikut beberapa link yang dapat dijadikan referensi.

  • Dokumentasi lengkap package robfig/cron dapat dilihat dari link tersebut.
  • Gunakan crontab.guru untuk mengatur crontab dan memastikan waktu penjadwalan sudah sesuai dengan kebutuhan.

Original Link: https://dev.to/benitaclarissa/membuat-penjadwalan-otomatis-cron-job-scheduler-menggunakan-golang-obg

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To