Skip to content

Commit 75a49a6

Browse files
committed
#### Version 0.9.4
* feature: 新增CreateTask用于根据TaskConfig对象创建对应的Task * Opt: 新增ErrNotSupportTaskType异常变量 * About CreateTask: - Define: CreateTask(config TaskConfig) (Task, error) - 支持cron\loop\queue三类Task的创建 - 定义错误的Task类型时将返回ErrNotSupportTaskType * Opt: 整理代码格式 * 2020-01-04 09:00 at ShangHai
1 parent 99e1183 commit 75a49a6

4 files changed

Lines changed: 38 additions & 11 deletions

File tree

example/queuetask/main.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import (
77
)
88

99
var service *TaskService
10-
const(
10+
11+
const (
1112
taskName = "TestQueue"
1213
)
1314

@@ -21,7 +22,7 @@ func Job_DealMessage(ctx *TaskContext) error {
2122
}
2223

2324
func enqueeMessage() {
24-
for i:=0;i<100;i++ {
25+
for i := 0; i < 100; i++ {
2526
t, exists := service.GetTask(taskName)
2627
if exists {
2728
qTask := t.(*QueueTask)
@@ -40,7 +41,7 @@ func main() {
4041
qTask, err := service.CreateQueueTask(taskName, true, 1, Job_DealMessage, nil, DefaultQueueSize)
4142
if err != nil {
4243
fmt.Println("service.CreateQueueTask error! => ", err.Error())
43-
}else{
44+
} else {
4445
fmt.Println("service.CreateQueueTask success! => ", qTask.TaskID())
4546
}
4647

@@ -53,7 +54,7 @@ func main() {
5354
err = t.RunOnce()
5455
if err != nil {
5556
fmt.Println(t.Context(), "RunOnce error =>", err)
56-
}else{
57+
} else {
5758
fmt.Println(t.Context(), "RunOnce success")
5859
}
5960
}
@@ -63,20 +64,21 @@ func main() {
6364
t, exists = service.GetTask(taskName)
6465
if exists {
6566
conf := &TaskConfig{
66-
IsRun: true,
67-
Interval:1000,
67+
IsRun: true,
68+
Interval: 1000,
6869
}
6970
err = t.Reset(conf)
7071
if err != nil {
7172
fmt.Println(t, "Reset error =>", err)
72-
}else{
73+
} else {
7374
fmt.Println(t, "Reset success ")
7475
}
7576
}
7677

7778
go enqueeMessage()
7879

79-
for true {
80+
for {
81+
time.Sleep(time.Hour)
8082
}
8183

8284
}

express_test.go

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

33
import (
4-
"testing"
54
"fmt"
5+
"testing"
66
)
77

8-
func TestParseExpress(t *testing.T){
8+
func TestParseExpress(t *testing.T) {
99
fmt.Println(parseExpress("1-5", ExpressType_WeekDay))
10-
}
10+
}

tasks.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package task
22

33
import (
44
"encoding/json"
5+
"errors"
56
"fmt"
67
"os"
78
"runtime/debug"
@@ -32,6 +33,8 @@ const (
3233
fullTimeLayout = "2006-01-02 15:04:05.9999"
3334
)
3435

36+
var ErrNotSupportTaskType = errors.New("not support task type")
37+
3538
type (
3639
Task interface {
3740
TaskID() string
@@ -211,6 +214,18 @@ func (service *TaskService) Logger() Logger {
211214
return service.logger
212215
}
213216

217+
// CreateTask create new task with TaskConfig and register to task service
218+
func (service *TaskService) CreateTask(config TaskConfig) (Task, error) {
219+
if config.TaskType == TaskType_Cron {
220+
return service.CreateCronTask(config.TaskID, config.IsRun, config.Express, config.Handler, config.TaskData)
221+
} else if config.TaskType == TaskType_Loop {
222+
return service.CreateLoopTask(config.TaskID, config.IsRun, config.DueTime, config.Interval, config.Handler, config.TaskData)
223+
} else if config.TaskType == TaskType_Loop {
224+
return service.CreateLoopTask(config.TaskID, config.IsRun, config.DueTime, config.Interval, config.Handler, config.TaskData)
225+
}
226+
return nil, ErrNotSupportTaskType
227+
}
228+
214229
// CreateCronTask create new cron task and register to task service
215230
func (service *TaskService) CreateCronTask(taskID string, isRun bool, express string, handler TaskHandle, taskData interface{}) (Task, error) {
216231
task, err := NewCronTask(taskID, isRun, express, handler, taskData)

version.MD

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
## devfeel/dottask
22

3+
#### Version 0.9.4
4+
* feature: 新增CreateTask用于根据TaskConfig对象创建对应的Task
5+
* Opt: 新增ErrNotSupportTaskType异常变量
6+
* About CreateTask:
7+
- Define: CreateTask(config TaskConfig) (Task, error)
8+
- 支持cron\loop\queue三类Task的创建
9+
- 定义错误的Task类型时将返回ErrNotSupportTaskType
10+
* Opt: 整理代码格式
11+
* 2020-01-04 09:00 at ShangHai
12+
313
#### Version 0.9.3
414
* Opt: 完善config模块,优化config注入模式
515
* Opt: 增加ConfigHandle函数定义,用于应用自定义config加载实现(如从redis\mysql等源读取配置)

0 commit comments

Comments
 (0)