-
Notifications
You must be signed in to change notification settings - Fork 0
Use as Go module
Shashank Huddedar edited this page Aug 7, 2023
·
4 revisions
If the application is in Golang, Go Scheduler can be used as a module directly instead of deploying it as a separate process.
package main
import (
"fmt"
"time"
sch "github.com/myntra/goscheduler/scheduler"
"github.com/myntra/goscheduler/store"
)
func main() {
// Create a Scheduler instance using a configuration loaded from a file
scheduler := sch.FromConfFile("config.json")
service := scheduler.Service
// Register App
registerAppPayload := store.App{
AppId: "my-app",
Partitions: 4,
Active: true,
}
registeredApp, err := service.RegisterApp(registerAppPayload)
if err != nil {
fmt.Printf("Failed to register app: %v\n", err)
return
}
fmt.Printf("Registered app: %+v\n", registeredApp)
}
package main
import (
"fmt"
"time"
sch "github.com/myntra/goscheduler/scheduler"
"github.com/myntra/goscheduler/store"
)
func main() {
// Create a Scheduler instance using a configuration loaded from a file
scheduler := sch.FromConfFile("config.json")
service := scheduler.Service
// Create a Schedule with a sample HTTP Callback
createSchedulePayload := store.Schedule{
AppId: "test",
Payload: "{}",
ScheduleTime: time.Now().Unix(),
Callback: store.Callback{
Type: "http",
Details: store.HTTPCallback{
Url: "http://127.0.0.1:8080/test/healthcheck",
Method: "GET",
Headers: map[string]string{
"Content-Type": "application/json",
"Accept": "application/json",
},
},
},
}
createdSchedule, err := service.CreateSchedule(createSchedulePayload)
if err != nil {
fmt.Printf("Failed to create schedule: %v\n", err)
return
}
fmt.Printf("Created schedule: %+v\n", createdSchedule)
}
Make sure to create Athena app before creating any Cron Schedules
package main
import (
"fmt"
"time"
sch "github.com/myntra/goscheduler/scheduler"
"github.com/myntra/goscheduler/store"
)
func main() {
// Create a Scheduler instance using a configuration loaded from a file
scheduler := sch.FromConfFile("config.json")
service := scheduler.Service
// Create a Schedule with a sample HTTP Callback
createSchedulePayload := store.Schedule{
AppId: "test",
Payload: "{}",
CronExpression: "* * * * *",
Callback: store.Callback{
Type: "http",
Details: store.HTTPCallback{
Url: "http://127.0.0.1:8080/test/healthcheck",
Method: "GET",
Headers: map[string]string{
"Content-Type": "application/json",
"Accept": "application/json",
},
},
},
}
createdSchedule, err := service.CreateSchedule(createSchedulePayload)
if err != nil {
fmt.Printf("Failed to create schedule: %v\n", err)
return
}
fmt.Printf("Created schedule: %+v\n", createdSchedule)
}
package main
import (
"fmt"
"time"
sch "github.com/myntra/goscheduler/scheduler"
"github.com/myntra/goscheduler/store"
)
func main() {
// Create a Scheduler instance using a configuration loaded from a file
scheduler := sch.FromConfFile("config.json")
service := scheduler.Service
// Get Schedule
scheduleUUID := "12345"
schedule, err := service.GetSchedule(scheduleUUID)
if err != nil {
fmt.Printf("Failed to get schedule: %v\n", err)
return
}
fmt.Printf("Retrieved schedule: %+v\n", schedule)
}
Using FooBarCallback
defined here
package main
import (
"fmt"
sch "github.com/myntra/goscheduler/scheduler"
"github.com/myntra/goscheduler/store"
)
func main() {
// Create a map of callback factories
callbackFactories := map[string]sch.CallbackFactory{
"foobar": func() store.Callback { return &FooBarCallback{} },
}
// Load the configuration file and create a Scheduler instance
scheduler := sch.FromFileWithCallbacks(callbackFactories, "config.json")
// Create a sample schedule payload
schedule := store.Schedule{
AppId: "test",
Payload: "{}",
ScheduleTime: 1686748449,
Callback: FooBarCallback{
Type: "foobar",
Details: "Custom details for FooBar callback",
},
}
// Create the schedule using the CreateSchedule function
createdSchedule, err := CreateSchedule(schedule)
if err != nil {
fmt.Println("Error creating schedule:", err)
return
}
// Print the created schedule
fmt.Println("Created schedule:", createdSchedule)
}