简介
Beanstalkd - 一个高性能、轻量级的分布式内存队列系统。
英文协议
中文协议
安装
这里我们用 Docker
来运行。
1 2
| docker pull schickling/beanstalkd docker run -d -p 11300:11300 schickling/beanstalkd
|
beanstalkd
管理 WEB
平台,主要用来看看以后的任务详情。
1 2
| docker pull schickling/beanstalkd-console docker run -d -p 2080:2080 --link beanstalkd:beanstalkd schickling/beanstalkd-console
|
通过 127.0.0.1:2080
访问
使用
官方客户端推荐列表 Client
下面我们主要介绍 Nodejs
客户端 bsw
客户端安装
客户端示例
这里我们用阿里开源框架 eggjs
做测试。
app.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 'use strict'; const { Consumer } = require('bsw'); module.exports = app => { app.beforeStart(async () => { const consumer = new Consumer({ host: 'localhost', port: '11300', tube: 'node', async handler(payload, job_info) { console.log('processing job: ', payload); console.log('processing job_info: ', job_info); // 这里进行业务操作 return 'success'; }, }); consumer.on('error', e => { console.log(e); }); console.log('beanstalkd启动了'); await consumer.start(); }); };
|
home.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 'use strict'; const Controller = require('egg').Controller; const { Producer } = require('bsw'); class HomeController extends Controller { async index() { const producer = new Producer({ host: 'localhost', port: '11300', tube: 'node', }); await producer.start(); await producer.putJob({ payload: JSON.stringify({ throw: true, result: 'success' }), priority: 0, // 优先级 delay: 30, // 延时单位(s) ttr: 60, // 允许worker执行的最大秒数 }); producer.stop(); this.ctx.body = 'hi, egg'; } } module.exports = HomeController;
|
天若有情天亦老,月如无恨月长圆