- 为什么写这个库
- 应用场景有哪些
- 如何使用
- 总结
为什么要写这个库?
在开始自研 go-queue
之前,针对以下我们调研目前的开源队列方案:
beanstalkd
beanstalkd
有一些特殊好用功能:支持任务priority、延时(delay)、超时重发(time-to-run)和预留(buried),能够很好的支持分布式的后台任务和定时任务处理。如下是 beanstalkd
基本部分:
job
:任务单元;tube
:任务队列,存储统一类型job
。producer 和 consumer 操作对象;producer
:job
生产者,通过 put 将 job 加入一个 tube;consumer
:job
消费者,通过 reserve/release/bury/delete 来获取job或改变job的状态;
很幸运的是官方提供了 go client:https://github.com/beanstalkd/go-beanstalk。
但是这对不熟悉 beanstalkd
操作的 go 开发者而言