2.0.1 • Published 4 years ago

ujq v2.0.1

Weekly downloads
1
License
MIT
Repository
-
Last release
4 years ago

UJQ

Universal Job Queue or UJQ in short is a multiplatform Redis based Simple Job management library. This Library is light weight and build for working with microservices. Currently we have Node and Python implementation of Library. C# and Java are in pipeline.

Benifits

  1. Jobs can be created and processed by different application or services
  2. Auto trigger when job is created
  3. Job Completion and error indications

Node.JS

CLICK HERE for Python Package

Installing UJQ

You can use NPM to install

npm install --save ujq

Connecting to Redis

UJQ uses native promises, hence ".then" will return a true once connection is established

const UJQ = require("ujq");
const ujq = new UJQ({ port: "6379", host: "127.0.0.1" });

//Attempt connection
ujq.connect()
    .then((result) => { 
      //returns a true
    })
    .catch((e)=>console.log(e));
    

Create a new Job

The following Code will create a new Job

ujq.createJob("Job_name", { data: "Some Input Data" })
   .then((result) => {
          //Return value will be {id:'some id',status:true}
   }).catch((e)=>console.log(e));
    

On creation of New Job

The Below Code will work on the job and returns a status

ujq.onCreated("Job_name", (err, data, complete) => {
    console.log("Data", data);
    complete({ job: "done" }, false);
});

In case of error, the false tag can be set as true... Invoking the complete callback will complete the job and will be moved from queue...

On completion of Job

ujq.onCompleted(id_from_return_of_createdJob).then(
  (result) => console.log(result)
 ).catch((e)=>console.log(e));

The above code will complete the job.

Create New Job

On version 2.0.0 and above, we have created a runJob method combining both createJob and onCompleted method

ujq.runJob("Job_name", (err, data, complete) => {
    console.log("Data", data);
    complete({ job: "done" }, false);
});

Express with UJQ

A simple implementation of Express with UJQ is as shown

Create a Server.js with the below code

const express = require("express")
const UJQ = require("ujq")
const ujq = new UJQ({ port: "6379", host: "127.0.0.1" })
const app = express()
const port = 3000

  ujq.connect()
    .then(() => {
        app.get('/', (req, res) => {

            ujq.createJob("test_q2", { test: "sample Data" })

                //Set On Complete
                .then((result) => ujq.onCompleted(result.id))

                //Send Result
                .then((result) => res.send(result))
    })
    
}).catch((e) => console.log(e))

app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`))

Now Create Worker.js with the below Code

const UJQ = require("ujq");
const ujq = new UJQ({ port: "6379", host: "127.0.0.1" });

//Connect to UJQ
ujq.connect()
    .then(() => {
        ujq.onCreated("test_q2", (err, data, complete) => {
            console.log("Data", data);
            complete({ job: "done" }, false);
        });
    }).catch(e=>console.log(e))

Run both the files and Enjoy :B

2.0.1

4 years ago

2.0.0

4 years ago

0.0.28

4 years ago

0.0.27

4 years ago

0.0.25

4 years ago

0.0.26

4 years ago

0.0.24

5 years ago

0.0.23

5 years ago

0.0.22

5 years ago

0.0.21

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago