1
rekulas 311 天前
主任务判断不一定非要依赖队列库,可以自己封装实现,就比较灵活了,随便找个队列工具都可以用
|
3
GeorgeWai 311 天前
基于 golang 的协程+chan 自己造个吧,基于 gpt4.0 ,问题不大,只要 prompt 方向对。
|
5
hahasong 311 天前
context + chan 自己就撸了 要开多少个协程就看你硬件配置了
|
6
Nazz 311 天前
来个 star 吧, 泛型实现的任务队列
https://github.com/lxzan/concurrency ```go package main import ( "fmt" "github.com/lxzan/concurrency" "sync/atomic" ) func main() { sum := int64(0) w := concurrency.NewWorkerGroup[int64]() for i := int64(1); i <= 10; i++ { w.Push(i) } w.OnMessage = func(args int64) error { fmt.Printf("%v ", args) atomic.AddInt64(&sum, args) return nil } w.Start() fmt.Printf("sum=%d\n", sum) } ``` 输出 ``` 4 5 6 7 8 9 10 1 3 2 sum=55 ``` |
7
777777 311 天前
https://github.com/RichardKnop/machinery ( redis ,mq ),https://github.com/hibiken/asynq (基于 redis )
|
8
777777 311 天前
分布式可以用上面两个,单体就用原始 chan
|
9
AnYi798 OP @777777 asynq 我用了 但是感觉不太符合我的要求 总感觉有问题 但是又不知道哪里有问题 。。。。。。。。。。。。。。。。。。 不是我想要的那种任务队列
|
10
Nazz 311 天前
看看这个, 无 channel 实现的任务队列, 搭配 WaitGroup 使用就符合你的需求了
https://github.com/lxzan/gws/blob/master/task.go |
12
flyqie 311 天前
你说的任务层级是需要干净 cancel 的吗?
如果是的话用协程不好做。 |
13
jorneyr 311 天前
channel 不就是天生的阻塞任务队列么。
|
14
lasuar 311 天前
直接用 chan 足够,需要持久化用 kafka 或其他 mq
|
15
dnsjia 310 天前
asynq https://www.ziji.work/golang/asynq-go-crontab-tasks.html
|