Skip to content

Commit 3145105

Browse files
authored
Merge pull request #2 from bolls/master
add get
2 parents 006cd93 + 55bd474 commit 3145105

File tree

7 files changed

+103
-8
lines changed

7 files changed

+103
-8
lines changed

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,41 @@ URL地址 `/delete`
135135
|:-------:|:-----------:|:------------:|:-----------------:|
136136
| id | string | Job唯一标识 | |
137137

138+
139+
### 查询任务
140+
URL地址 `/get`
141+
142+
```json
143+
{
144+
"id": "15702398321"
145+
}
146+
```
147+
148+
| 参数名 | 类型 | 含义 | 备注 |
149+
|:-------:|:-----------:|:------------:|:-----------------:|
150+
| id | string | Job唯一标识 | |
151+
152+
153+
154+
队列中有任务返回值
155+
```json
156+
{
157+
"code": 0,
158+
"message": "操作成功",
159+
"data": {
160+
"id": "15702398321",
161+
"body": "{\"uid\": 10829378,\"created\": 1498657365 }"
162+
}
163+
}
164+
```
165+
队列为空返回值
166+
```json
167+
{
168+
"code": 0,
169+
"message": "操作成功",
170+
"data": null
171+
}
172+
```
138173

139174
### 完成任务
140175
URL地址 `/finish`

cmd/cmd.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ package cmd
33
import (
44
"flag"
55
"fmt"
6-
"github.com/ouqiang/delay-queue/config"
7-
"github.com/ouqiang/delay-queue/delayqueue"
8-
"github.com/ouqiang/delay-queue/routers"
96
"log"
107
"net/http"
118
_ "net/http/pprof"
129
"os"
10+
11+
"github.com/ouqiang/delay-queue/config"
12+
"github.com/ouqiang/delay-queue/delayqueue"
13+
"github.com/ouqiang/delay-queue/routers"
1314
)
1415

1516
type Cmd struct{}
@@ -53,6 +54,7 @@ func (cmd *Cmd) runWeb() {
5354
http.HandleFunc("/pop", routers.Pop)
5455
http.HandleFunc("/finish", routers.Delete)
5556
http.HandleFunc("/delete", routers.Delete)
57+
http.HandleFunc("/get", routers.Get)
5658

5759
log.Printf("listen %s\n", config.Setting.BindAddress)
5860
err := http.ListenAndServe(config.Setting.BindAddress, nil)

config/config.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package config
22

33
import (
4-
"gopkg.in/ini.v1"
54
"log"
5+
6+
"gopkg.in/ini.v1"
67
)
78

89
// 解析配置文件

delayqueue/delay_queue.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package delayqueue
33
import (
44
"errors"
55
"fmt"
6-
"github.com/ouqiang/delay-queue/config"
76
"log"
87
"time"
8+
9+
"github.com/ouqiang/delay-queue/config"
910
)
1011

1112
var (
@@ -75,6 +76,20 @@ func Remove(jobId string) error {
7576
return removeJob(jobId)
7677
}
7778

79+
// 查询Job
80+
func Get(jobId string) (*Job, error) {
81+
job, err := getJob(jobId)
82+
if err != nil {
83+
return job, err
84+
}
85+
86+
// 消息不存在, 可能已被删除
87+
if job == nil {
88+
return nil, nil
89+
}
90+
return job, err
91+
}
92+
7893
// 轮询获取Job名称, 使job分布到不同bucket中, 提高扫描速度
7994
func generateBucketName() <-chan string {
8095
c := make(chan string)

delayqueue/ready_queue.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package delayqueue
22

33
import (
44
"fmt"
5+
56
"github.com/ouqiang/delay-queue/config"
67
)
78

delayqueue/redis.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package delayqueue
22

33
import (
4-
"github.com/garyburd/redigo/redis"
5-
"github.com/ouqiang/delay-queue/config"
64
"log"
75
"time"
6+
7+
"github.com/garyburd/redigo/redis"
8+
"github.com/ouqiang/delay-queue/config"
89
)
910

1011
var (

routers/routers.go

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package routers
22

33
import (
44
"encoding/json"
5-
"github.com/ouqiang/delay-queue/delayqueue"
65
"io/ioutil"
76
"log"
87
"net/http"
98
"strings"
109
"time"
10+
11+
"github.com/ouqiang/delay-queue/delayqueue"
1112
)
1213

1314
type PopRequest struct {
@@ -123,6 +124,45 @@ func Delete(resp http.ResponseWriter, req *http.Request) {
123124
resp.Write(generateSuccessBody("操作成功", nil))
124125
}
125126

127+
// 查询job
128+
func Get(resp http.ResponseWriter, req *http.Request) {
129+
var deleteRequest DeleteRequest
130+
err := readBody(resp, req, &deleteRequest)
131+
if err != nil {
132+
return
133+
}
134+
id := strings.TrimSpace(deleteRequest.Id)
135+
if id == "" {
136+
resp.Write(generateFailureBody("job id不能为空"))
137+
return
138+
}
139+
job, err := delayqueue.Get(id)
140+
if err != nil {
141+
log.Printf("查询job失败#%s", err.Error())
142+
resp.Write(generateFailureBody("查询Job失败"))
143+
return
144+
}
145+
146+
if job == nil {
147+
resp.Write(generateSuccessBody("操作成功", nil))
148+
return
149+
}
150+
151+
type Data struct {
152+
Id string `json:"id"`
153+
Body string `json:"body"`
154+
}
155+
156+
data := Data{
157+
Id: job.Id,
158+
Body: job.Body,
159+
}
160+
161+
log.Printf("get job#%+v", data)
162+
163+
resp.Write(generateSuccessBody("操作成功", data))
164+
}
165+
126166
type ResponseBody struct {
127167
Code int `json:"code"`
128168
Message string `json:"message"`

0 commit comments

Comments
 (0)