Golang Go语言异步任务队列YTask发布,欢迎使用
Golang Go语言异步任务队列YTask发布,欢迎使用
YTask 是 Go 的异步任务队列,比起其他框架更方便快捷。
特性:
- 支持几乎所有类型,包括基本类型( int, floalt, string...),数组切片,结构体以及复杂的结构体嵌套。
- 注册任务,调用任务一行代码完成,不需要对参数进行而外处理。
- 优雅的启动与结束方式,能 1 秒结束任务(如果你用过其他的框架(比如 gocelery,machinery )会发现就算没有任务,他们也没法立即结束任务,而是需要等几秒)
GitHub
安装
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)
更多关于Golang Go语言异步任务队列YTask发布,欢迎使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
为啥不用 NSQ~
算是理念不同吧。nsq 是消息队列,他传递的是消息,这个相当于 celery 的 go 实现,是任务队列,传递的是任务。
比较典型的应用场景就是:
消息队列,可以用来消费日志,把多台服务器的日志合并。但任务队列却不适合这种场景。
任务队列,可以用来处理异步的计算任务,比如用户购买了一件物品,需要计算用户的积分等,更新数据库,这时用任务队列比较合适。
消息队列侧重消息的吞吐,处理。任务队列,侧重任务执行,重试,结果返回。
消息队列可以代替任务队列,但还需要进行而外开发,在任务的执行上,提供的功能也不如任务队列。
任务队列更像远程函数调用,不过它和 thrift, grpc 也有不同,它不需要定义描述文件,也不是直接请求,而是借助消息队列传递任务信息
在一定程度上,任务队列相当于消息队列在异步任务场景上的深度定制化开发。
给个 star,之前用 machinary 感觉坑好多…后来渐渐不用了,改用 nats-streaming 自己实现异步任务队列了…
哈哈,多谢~我也是觉得 machinary 不爽才自己写了个的
与 uber cadence 比有何不同?
感谢各位对YTask——Golang异步任务队列的关注与支持!YTask作为一个专为Go语言设计的异步任务处理框架,旨在简化并发任务管理和提升系统性能。
YTask的核心优势在于其高效的任务调度机制和灵活的任务处理接口。它允许开发者以简洁的方式定义和执行异步任务,无需深入了解底层的并发控制细节。通过YTask,你可以轻松实现任务的分发、执行和结果收集,从而提升系统的响应速度和吞吐量。
此外,YTask还提供了丰富的配置选项和扩展接口,以满足不同场景下的需求。你可以根据任务的优先级、执行时间等条件进行任务调度,也可以自定义任务处理逻辑和结果处理方式。这些特性使得YTask在处理大规模并发任务时表现出色,适用于各种需要高效任务处理的Go语言项目。
我们深知,一个优秀的异步任务队列框架不仅需要强大的功能,还需要良好的稳定性和易用性。因此,YTask在设计和实现过程中,始终注重代码的健壮性和可维护性,同时也提供了详细的文档和示例代码,以帮助开发者快速上手和解决实际问题。
如果你正在寻找一个高效、灵活且易用的Go语言异步任务队列框架,那么YTask无疑是一个值得尝试的选择。我们诚挚地邀请各位开发者下载试用,并提出宝贵的意见和建议。让我们携手共进,共同推动Go语言技术的发展和创新!