Skip to content

Commit 9f5b2cb

Browse files
committed
added more docs. Changed package name to redisqueue to polute the namespace less for apps that want to use "queue"
1 parent 3c944da commit 9f5b2cb

File tree

4 files changed

+21
-27
lines changed

4 files changed

+21
-27
lines changed

README.markdown

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ This is a redis-based queue for usage in Go. I evaluated a lot of other options
2121
Adding jobs to a queue.
2222

2323
```
24-
import "github.com/AgileBits/go-redis-queue/queue"
24+
import "github.com/AgileBits/go-redis-queue/redisqueue"
2525
```
2626

2727
```
2828
c, err := redis.Dial("tcp", "127.0.0.1:6379")
2929
if err != nil { ... }
3030
defer c.Close()
3131
32-
q := queue.New("some_queue_name", c)
32+
q := redisqueue.New("some_queue_name", c)
3333
3434
wasAdded, err := q.Push("basic item")
3535
if err != nil { ... }
@@ -47,7 +47,7 @@ c, err := redis.Dial("tcp", "127.0.0.1:6379")
4747
if err != nil { ... }
4848
defer c.Close()
4949
50-
q := queue.New("some_queue_name", c)
50+
q := redisqueue.New("some_queue_name", c)
5151
5252
for !timeToQuit {
5353
job, err = q.Pop()
@@ -66,7 +66,7 @@ c, err := redis.Dial("tcp", "127.0.0.1:6379")
6666
if err != nil { ... }
6767
defer c.Close()
6868
69-
q := queue.New("some_queue_name", c)
69+
q := redisqueue.New("some_queue_name", c)
7070
7171
for !timeToQuit {
7272
jobs, err := q.PopJobs(100) // argument is "limit"
@@ -84,4 +84,5 @@ for !timeToQuit {
8484
## Requirements
8585

8686
- Redis 2.6.0 or greater
87+
- github.com/garyburd/redigo/redis
8788
- Go

queue/queue.go renamed to redisqueue/queue.go

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package queue
1+
package redisqueue
22

33
import (
44
"fmt"
@@ -8,22 +8,26 @@ import (
88
"github.com/garyburd/redigo/redis"
99
)
1010

11+
// Queue holds a reference to a redis connection and a queue name.
1112
type Queue struct {
1213
c redis.Conn
1314
Name string
1415
}
1516

17+
// New defines a new Queue
1618
func New(queueName string, c redis.Conn) *Queue {
1719
return &Queue{
1820
c: c,
1921
Name: queueName,
2022
}
2123
}
2224

25+
// Push pushes a single job on to the queue. The job string can be any format, as the queue doesn't really care.
2326
func (q *Queue) Push(job string) (bool, error) {
2427
return q.Schedule(job, time.Now())
2528
}
2629

30+
// Schedule schedule a job at some point in the future, or some point in the past. Scheduling a job far in the past is the same as giving it a high priority, as jobs are popped in order of due date.
2731
func (q *Queue) Schedule(job string, when time.Time) (bool, error) {
2832
score := when.UnixNano()
2933
added, err := redis.Bool(q.c.Do("ZADD", q.Name, score, job))
@@ -32,15 +36,18 @@ func (q *Queue) Schedule(job string, when time.Time) (bool, error) {
3236

3337
}
3438

39+
// Pending returns the count of jobs pending, including scheduled jobs that are not due yet.
3540
func (q *Queue) Pending() (int64, error) {
3641
return redis.Int64(q.c.Do("ZCARD", q.Name))
3742
}
3843

44+
// FlushQueue removes everything from the queue. Useful for testing.
3945
func (q *Queue) FlushQueue() error {
4046
_, err := q.c.Do("DEL", q.Name)
4147
return err
4248
}
4349

50+
// Pop removes and returns a single job from the queue. Safe for concurrent use (multiple goroutines must use their own Queue objects and redis connections)
4451
func (q *Queue) Pop() (string, error) {
4552
jobs, err := q.PopJobs(1)
4653
if err != nil {
@@ -52,25 +59,11 @@ func (q *Queue) Pop() (string, error) {
5259
return jobs[0], nil
5360
}
5461

62+
// PopJobs returns multiple jobs from the queue. Safe for concurrent use (multiple goroutines must use their own Queue objects and redis connections)
5563
func (q *Queue) PopJobs(limit int) ([]string, error) {
5664
return redis.Strings(popJobsScript.Do(q.c, q.Name, fmt.Sprintf("%d", time.Now().UnixNano()), strconv.Itoa(limit)))
5765
}
5866

59-
// func (q *Queue) PopJobs(limit int) ([]string, error) {
60-
// jobs, err := redis.Strings(q.c.Do("ZRANGEBYSCORE", q.Name, "-inf", time.Now().UnixNano(), "LIMIT", 0, limit))
61-
// if err != nil {
62-
// return jobs, err
63-
// }
64-
//
65-
// if len(jobs) > 0 {
66-
// _, err = q.c.Do("ZREM", q.Name, quoteArgs(jobs))
67-
// if err != nil {
68-
// return []string{}, err
69-
// }
70-
// }
71-
// return jobs, nil
72-
// }
73-
//
7467
func quoteArgs(args []string) string {
7568
result := ""
7669
for i := range args {

queue/queue_test.go renamed to redisqueue/queue_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package queue_test
1+
package redisqueue_test
22

33
import (
44
"testing"
55
"time"
66

7-
"github.com/AgileBits/go-redis-queue/queue"
7+
"github.com/AgileBits/go-redis-queue/redisqueue"
88
"github.com/garyburd/redigo/redis"
99
)
1010

@@ -16,7 +16,7 @@ func TestQueueTasks(t *testing.T) {
1616
}
1717
defer c.Close()
1818

19-
q := queue.New("basic_queue", c)
19+
q := redisqueue.New("basic_queue", c)
2020

2121
err = q.FlushQueue()
2222
if err != nil {
@@ -62,7 +62,7 @@ func TestQueueTaskScheduling(t *testing.T) {
6262
}
6363
defer c.Close()
6464

65-
q := queue.New("scheduled_queue", c)
65+
q := redisqueue.New("scheduled_queue", c)
6666

6767
err = q.FlushQueue()
6868
if err != nil {
@@ -121,7 +121,7 @@ func TestPopOrder(t *testing.T) {
121121
}
122122
defer c.Close()
123123

124-
q := queue.New("scheduled_queue", c)
124+
q := redisqueue.New("scheduled_queue", c)
125125

126126
err = q.FlushQueue()
127127
if err != nil {
@@ -195,7 +195,7 @@ func TestPopMultiOrder(t *testing.T) {
195195
}
196196
defer c.Close()
197197

198-
q := queue.New("scheduled_queue", c)
198+
q := redisqueue.New("scheduled_queue", c)
199199

200200
err = q.FlushQueue()
201201
if err != nil {

queue/scripts.go renamed to redisqueue/scripts.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package queue
1+
package redisqueue
22

33
import "github.com/garyburd/redigo/redis"
44

0 commit comments

Comments
 (0)