Persist Queue and job on NodeJs
simple persist Queue and Job manager based on Redis on Node Js
this package will update every week and anyone can contirbute our git.Support:
Let’s have a talk: [email protected]
When you want to run some task at defined time.
example: send notification to user 2 hours later after setting appointment
When you want to create a queue and get data every 5 seconds
example: when you want to send many requests to the any endpoint, but you do not want to send all of the request together.
const faQueue = require("faqueue");
const queue = require("faqueue/queue");
faQueue.connect("0.0.0.0",8586,3);// set your redis host and port and database (0-12)
let queueObject = new queue({name: "test", interval: 3000, cb: receivedQueue,max_try:2,waitFor:["Other queue name"]}); // interval as ms
async function receivedQueue(data) {
console.log(data.message);
if(data.message.status===false)
await queueObject.setAsFailed(data);
}
async function testQueue() {
await queueObject.addToQueue({data: "hello",status:false});
await queueObject.addToQueue({data: "hello world",status:true});
await queueObject.startFetch();
await queueObject.pause();
await queueObject.resume();
}
testQueue();
const faQueue = require("faqueue");
const job = require("faqueue/job");
faQueue.connect("0.0.0.0",8586,3);
let jobObject = new job({name: "test",max_try:2},jobReceived);
async function jobReceived(data){
console.log(data.message);
if(data.message.status===false)
await jobObject.setAsFailed(data);
}
async function testJob(){
// available parameters is second,minute,hour,day. they are optional but you need to set one of them
await jobObject.addJob({data:"hello",status:false},{second:3});
await jobObject.addJob({data:"hello 1",status:true},{second:3,hour:4});
await jobObject.addJob({data:"hello 2",status:false},{second:3,minute:21,hour:3,day:2});
}
testJob();
constructor (worker:worker object): {name: “name_of_queue”, interval: “interval_time_in_ms”, cb: “callback function”,max_try:“maximum try for failed times” }.
addToQueue (data:string | json): to add item to the end of the queue.
startFetch(): start pop from line.
setAsFailed(data: faQueue object,toEnd=true): call this function to add object to the first or end of line again
getLength(): get length of line
removeQueue(): remove and clean queue
constructor (worker:worker object): {name: “name of job”,max_try:“maximum try for failed times”},“Callback function” }.
addJob (data:string | json): to add item to jobs.
setAsFailed(data: faQueue object,toEnd=true): call this function to add object to jobs list again.
getLength(): get length of jobs object
removeJob(): remove and clean jobs list