YTask 是 Go 的异步任务队列,比起其他框架更方便快捷。
特性:
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)
1
a719114136 OP 打破 0 回复
|
2
xjqxz2 2019-09-03 20:29:05 +08:00
为啥不用 NSQ~
|
3
a719114136 OP @xjqxz2 算是理念不同吧。nsq 是消息队列,他传递的是消息,这个相当于 celery 的 go 实现,是任务队列,传递的是任务。
比较典型的应用场景就是: 消息队列,可以用来消费日志,把多台服务器的日志合并。但任务队列却不适合这种场景。 任务队列,可以用来处理异步的计算任务,比如用户购买了一件物品,需要计算用户的积分等,更新数据库,这时用任务队列比较合适。 消息队列侧重消息的吞吐,处理。任务队列,侧重任务执行,重试,结果返回。 消息队列可以代替任务队列,但还需要进行而外开发,在任务的执行上,提供的功能也不如任务队列。 任务队列更像远程函数调用,不过它和 thrift, grpc 也有不同,它不需要定义描述文件,也不是直接请求,而是借助消息队列传递任务信息 |
4
a719114136 OP @xjqxz2 在一定程度上,任务队列相当于消息队列在异步任务场景上的深度定制化开发。
|
5
heavyrainn 2019-09-11 17:26:14 +08:00
给个 star,之前用 machinary 感觉坑好多…后来渐渐不用了,改用 nats-streaming 自己实现异步任务队列了…
|
6
a719114136 OP @heavyrainn 哈哈,多谢~我也是觉得 machinary 不爽才自己写了个的
|
7
dbskcnc 2019-09-16 15:52:37 +08:00
与 uber cadence 比有何不同?
|