0.1.1 • Published 7 years ago

fbeans v0.1.1

Weekly downloads
-
License
ISC
Repository
-
Last release
7 years ago

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;
  }
});
0.1.1

7 years ago

0.1.0

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago