An SDK for work with Apio Gravity in Golang.
go get github.com/ApioIoT/gogravity
gravity := gogravity.New("http://localhost:7000")
// Test connection
if err := gravity.Ping(context.Background()); err != nil {
log.Fatal(err)
}
// Setup a topic (set true on the second parameter create a topic if not exists)
topic, err := gravity.Topic("project.resource.action", true)
if err != nil {
log.Fatal(err)
}
type Payload struct {
Message string `json:"message"`
}
if err := topic.Enqueue(Payload{ Message: "ciao" }); err != nil {
log.Fatal(err)
}
job, err := topic.Dequeue()
if err != nil {
t.Fatal(err)
}
jobs, cancel, err := topic.Listen("* * * * * *", "Europe/Rome")
if err != nil {
log.Fatal(err)
}
defer func() {
if err := cancel(); err != nil {
log.Fatal(err)
}
}()
for job := range jobs {
// ...
}
if err := gravity.Complete(job, nil); err != nil {
log.Fatal(err)
}
if err := gravity.Fail(job, nil); err != nil {
log.Fatal(err)
}
if err := gravity.Return(job); err != nil {
log.Fatal(err)
}
if err := topic.AddSchedule("*/5 * * * * *", "Europe/Rome", true, false, 0); err != nil {
t.Fatal(err)
}