q

package module
v0.0.0-...-b812b29 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 6, 2017 License: MIT Imports: 3 Imported by: 0

README

Q

CircleCI

A Go background worker.

How it works

The pattern used is very similar to other background workers. You can enqueue data, which will be stored in a data store.
Then, a second process will listen for entries pushed to the data store and execute a handler when it gets one.

Data Stores

Q includes two data stores by default: memory and redis.
But as long as you implement the DataStore Interface, you could implement your own with any database of your choice.

Usage

In order to use Q, you will first need to setup a queue object.

// queue, err := queue.New(&stores.MemoryStore{})
queue, err := queue.New(stores.RedisDataStore("default", redisPool)) // redisPool is a redigo *redis.Pool

You can then enqueue a job into that queue:

err := queue.Enqueue([]data("hello world"))

And listen for events, which needs to be done in a dedicated process

q.Run(queue, func(d []byte) error {
  log.Println(string(d))
  return nil
}, 10)

"Expert" Mode

The Run methods is a shortcut to make the usage of Q easier.
You may want to implement your own worker loop though.

You can then use the q/queue and q/stores packages.

Setup a queue object, the same way you would do in "basic" mode

// queue, err := queue.New(&stores.MemoryStore{})
queue, err := queue.New(stores.RedisDataStore("default", redisPool)) // redisPool is a redigo *redis.Pool

Enqueueing a job uses the same api as the "basic" mode

err := queue.Enqueue([]data("hello world"))

You can then listen for events in your own loop

for {
  err := queue.Handle(func(d []byte) error {
    log.Println(string(d))
    return nil
  })
  if err != nil {
    log.Fatal(err)
  }
}

Note that the Run method does more than just loop waiting for records. When using this mode, you will need to handle max concurrency yourself.

You will also need to execute the queue.HouseKeeping() method regularly, as it recovers dead jobs.

License

Q is released under the MIT License.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run

func Run(queue *queue.Queue, handler func([]byte) error, mc int) error

Run starts a local worker

Types

This section is empty.

Directories

Path Synopsis
examples

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL