taskqGolang 异步任务/作业队列
taskq 是一个带有 Redis、SQS、IronMQ 和内存后端的 Golang 异步任务/作业队列。
特性:
- Redis、SQS、IronMQ 和内存后端。
- 自动缩放用于获取(fetcher)和处理消息(worker)的 goroutines 的数量。
- 全局速率限制。
- 工人的全球限制。
- 调用一次 - 删除具有相同名称的重复消息。
- 使用指数退避自动重试。
- 当队列中的所有消息都失败时自动暂停。
- 用于处理失败消息的后备处理程序。
- 消息批处理。它用于 SQS 和 IronMQ 后端批量添加/删除消息。
- 使用 snappy / s2 自动压缩消息。
API overview
t := myQueue.RegisterTask(&taskq.TaskOptions{ Name: "greeting", Handler: func(name string) error { fmt.Println("Hello", name) return nil }, }) // Say "Hello World". err := myQueue.Add(t.WithArgs(context.Background(), "World")) if err != nil { panic(err) } // Say "Hello World" with 1 hour delay. msg := t.WithArgs(ctx, "World") msg.Delay = time.Hour _ = myQueue.Add(msg) // Say "Hello World" once. for i := 0; i < 100; i++ { msg := t.WithArgs(ctx, "World") msg.Name = "hello-world" // unique _ = myQueue.Add(msg) } // Say "Hello World" once with 1 hour delay. for i := 0; i < 100; i++ { msg := t.WithArgs(ctx, "World") msg.Name = "hello-world" msg.Delay = time.Hour _ = myQueue.Add(msg) } // Say "Hello World" once in an hour. for i := 0; i < 100; i++ { msg := t.WithArgs(ctx, "World").OnceInPeriod(time.Hour) _ = myQueue.Add(msg) } // Say "Hello World" for Europe region once in an hour. for i := 0; i < 100; i++ { msg := t.WithArgs(ctx, "World").OnceInPeriod(time.Hour, "World", "europe") _ = myQueue.Add(msg) }
评论
TaskQueue-swiftiOS 异步任务队列
TaskQueue(swift)是个非常强大的Swift类,用来管理异步任务,需要一个一个的执行,用户只负责添加任务到队列,队列会排序然后一个一个执行。
TaskQueue-swiftiOS 异步任务队列
0
YTaskGo 异步任务队列
YTask是Go的异步任务队列,比起其他框架更方便快捷。架构图:特性:支持几乎所有类型,包括基本类型(int,floalt,string),数组切片,结构体以及复杂的结构体嵌套。注册任务,调用任务一行
YTaskGo 异步任务队列
0
Celery异步任务队列
Celery是一个简单,灵活且可靠的分布式系统,可以处理大量消息,同时为操作提供维护该系统所需的工具。这是一个任务队列,着重于实时处理,同时还支持任务调度。Celery通过消息进行通信,通常使用经纪人
Celery异步任务队列
0
TaskQueue-swiftiOS 异步任务队列
TaskQueue(swift) 是个非常强大的 Swift 类,用来管理异步任务,需要一个一个的执
TaskQueue-swiftiOS 异步任务队列
0