title: "Beanstalkd 任务队列" date: 2021-07-01T10:37:08+07:00
beanstalkd 是一个任务队列,用于解耦任务发布和任务执行。主要用于异步任务,能提高主线业务的响应速度。
beanstalkd 由纯 C 写就,编译简单,有相对极其简洁的启动参数,客户端协议采用 ascii 格式,可用 telnet 调试。有几乎所有主流编程语言的客户端协议封装库。
可参阅官方文档,包含中英文版本。
put with delay release with delay
----------------> [DELAYED] <------------.
| |
kick | (time passes) |
| |
put v reserve | delete
-----------------> [READY] ---------> [RESERVED] --------> *poof*
^ ^ | |
| \ release | |
| `-------------' |
| |
| kick |
| |
| bury |
[BURIED] <---------------'
|
| delete
`--------> *poof*
从其官网上的代码可以看出 beanstalkd 是支持分布式的,如下:
beanstalk = Beanstalk::Pool.new(['10.0.1.5:11300'])
loop do
job = beanstalk.reserve
puts job.body # prints "hello"
job.delete
end