0.1.1 • Published 7 years ago
fbeans v0.1.1
it's easy to deal beanstalkd task.
this module just reserve task from server , and deal the task
current version is test version
install
npm i fbeans --save
//reserve data must be jsondata.
//so you can switch and case data's attributes
run a test container with docker
docker pull foxlord/beanstalkd
docker run --name fbeans -p 11300:11300 foxlord/beanstalkd /usr/bin/beanstalkd
//then
telnet 0.0.0.0 11300
//try to put data
put 0 0 0 10
{"a":"11"}
events
let events = {
'unknown command': ()=>{},
'bad format' : ()=>{},
'internal error' : ()=>{},
'expected crlf' : ()=>{},
'job too big': ()=>{},
'draining': ()=>{},
//not defined command in fbeans
'uncatch': ()=>{},
//now is not work. because of not use reserve-with-timeout
'timeout' : ()=>{},
'out of memory' : ()=>{}
}
options
{
init, //when fbeans run. do something.
events, //defined own events or beanstalkd events
host, //default is 0.0.0.0
port, //default is 11300
tube,// default is xfbeans
log //if ouput fbeans log
}
example
//for test insert random data
// import {fbeans} from 'fbeans'; //es6
const fbeans = require('fbeans').fbeans;
const faker = require('faker/locale/en');
let events = {
//define your own api to deal the beanstalkd tasks
[Symbol.for('update')] : (id,data,e) => {
console.log('called update method. id is:' +id)
console.log('called update method. data is:' , data)
setTimeout(()=>{
//set time out to delete task
e.emit('delete', id);
//e.emit('bury', id , 10); // bury task, pri = 10
},50)
},
[Symbol.for('delete')] : (id)=>{
//write your deal program
e.emit('delete', id);
},
//define beanstalkd events
'unknown command': () => {
console.log('receive a unknown command')
}
}
let init = (e)=>{
//after server is ready. this method will run when server alive.
console.log(`it is ready by init`)
setTimeout(()=>{
e.emit('put', JSON.stringify({task:faker.name.findName(),email: faker.internet.email() ,time:(new Date()).getTime() }));
},1000)
}
let fb = fbeans.run({events,init},(id,data,e)=>{
//choose your api here
switch(data.task)
{
case 'delete.doc':
e.emit(Symbol.for('delete'), id);
break;
default:
e.emit(Symbol.for('update'), id, data, e);
break;
}
});