YTask 是 Go 的異步任務隊列,比起其他框架更方便快捷。
架構圖:
特性:
- 支持幾乎所有類型,包括基本類型(int, floalt, string),數組切片,結構體以及複雜的結構體嵌套。
- 註冊任務,調用任務一行代碼完成,不需要對參數進行而外處理。
- 優雅的啓動與結束方式,能1秒結束任務(如果你用過其他的框架(比如gocelery,machinery)會發現就算沒有任務,他們也沒法立即結束任務,而是需要等幾秒)
GitHub:
https://github.com/gojuukaze/YTask
安裝
go get github.com/gojuukaze/YTask/v2
註冊任務
type User struct{
...
}
// 任務函數
func DemoFunc(a int, b float64, c []string, user User) (int, []User, string) {
....
return ....
}
...
ser.Add("group1", "demo_func", DemoFunc)
調用任務
taskId, _ = client.Send("group1", "demo_func", 11, 22.2, []string{"bb", "cc"}, User{"hh",24})
獲取結果
result, _ = client.GetResult(taskId, 2*time.Second, 300*time.Millisecond)
var a int
var b []User
var c string
a, _ = result.GetInt64(0)
// or
result.Get(1,&b)
// or
result.Gets(&a, &b, &c)