参考自 Celery 和 Python-RQ 的实现, 用 Golang 实现了一个分布式任务队列. 目前的功能有:
- [x] 并发执行任务
- [x] 简单易使用
- [x] 语言无关的协议
- [x] 分布式
- [ ] 高可用
- [ ] 重试机制
- [ ] 无缝重启
参考自 Celery 和 Python-RQ 的实现, 用 Golang 实现了一个分布式任务队列. 目前的功能有:
1
TangMonk Oct 27, 2017 via Android
感觉可以不要 redis 了
|
3
timothyye Oct 27, 2017 via Android
有没有性能测试数据?
|
6
lights Oct 27, 2017 via iPhone
x 是表示有还是表示没有?
另外数据固化以及队列的多端生产和多端消费怎么样 |
8
herozem OP @lights 基于 redis 的任务队列有一个通病,就是很难保证消费者挂了之后任务不丢失. 目前 toq 也存在这个问题, 这是上面 TODO 中 HA 这一步要做的. 多端生产是支持的, 只要按照协议往 broker 中打入数据即可. 多端消费也是支持的. 我刚刚提交了一个新的提交, 引入了 `sleepy mode`, 即, 消费者端忙碌时, 会延迟从 broker 拉任务. 这也是为之后做任务不丢失的铺垫.
|
9
yzjustc Jun 12, 2018
@herozem 刚才看了下你这个队列,retry 的时候不应该再用新的 goroutine 而是接在本协程栈做,递归或者循环都可以,如果开新 goroutine,可能一个 task 会执行两次,一个 token 回放了两次
|