Skip to content

ApioIoT/gogravity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages