GoGravity
An SDK for work with Apio Gravity in Golang.
Install
go get github.com/ApioIoT/gogravity
Base setup
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)
}
Enqueue a job
type Payload struct {
Message string `json:"message"`
}
if err := topic.Enqueue(Payload{ Message: "ciao" }); err != nil {
log.Fatal(err)
}
Dequeue a job
job, err := topic.Dequeue()
if err != nil {
t.Fatal(err)
}
Listen for a job
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 {
// ...
}
Complete a job
if err := gravity.Complete(job, nil); err != nil {
log.Fatal(err)
}
Fail a job
if err := gravity.Fail(job, nil); err != nil {
log.Fatal(err)
}
Return a job
if err := gravity.Return(job); err != nil {
log.Fatal(err)
}
Add a schedule
if err := topic.AddSchedule("*/5 * * * * *", "Europe/Rome", true, false, 0); err != nil {
t.Fatal(err)
}