1.0.87 • Published 1 month ago

workstack v1.0.87

Weekly downloads
-
License
MIT
Repository
github
Last release
1 month ago

Summary

A massively scalable work queue implemented in Node.js (currently in alpha state)

Example Usage

Install

npm install workstack

Start a Router

const { Router } = require("workstack");

var router = new Router({});
router.start();

Start a Worker

const { Worker } = require("workstack");

async function work(data)
{   
    console.log(`${new Date()}: working.`);
    console.log("Data received: ", data);
    console.log(`${new Date()}: done.`);
    
    return (new Date()).toString();

}

(   async()=>
    {   
        var worker = new Worker(
            {   pingInterval: 5000,
                queue: "test-queue",
                work: ()=>{console.log("doing work")}
            });
        worker.start();

    }
)()

Send Work

const { Producer } = require("workstack");

var producer = new Producer({});
producer.enqueue(
    {   queue: "test-queue",
        command: "execWork", 
        data: {vals: ["1", "2"]}
    });

Send Work Synchronously (wait for reply)

const { Producer } = require("workstack");

var producer = new Producer({});

(   
    async()=>
    {   
        var output = await producer.enqueue(
            {   queue: "test-queue",
                command: "execWork", 
                data: {vals: ["1", "2"]}
            }, true);

        console.log(JSON.stringify(output));

    }

)()

Authentication

Currently shared key authentication is available. To enable this, start the tiers (Router, Worker and Producer) with the following additional parameters:

Router

var router = new Router({authMethod: "sharedKey", authKey: "aequooLohkoa3ar2phee4sheeToxo6"});

Worker

var worker = new Worker(
    {   authKey: "aequooLohkoa3ar2phee4sheeToxo6", 
        pingInterval: 30000, queue: "test-queue",
        work: ()=>{console.log("doing work")}
    });

Producer

var producer = new Producer({authKey: "aequooLohkoa3ar2phee4sheeToxo6"});

Encryption

Messages can be encrypted by setting the following parameter during initialization of each component (router, producer, worker):

encrypt: true

For example, to enable encryption for the router:

var router = new Router({encrypt: true});

If encryption is enabled on one of the components, it must then be enabled on all of the components (router, producer, worker).

1.0.87

1 month ago

1.0.84

1 month ago

1.0.86

1 month ago

1.0.85

1 month ago

1.0.77

11 months ago

1.0.76

12 months ago

1.0.75

12 months ago

1.0.79

8 months ago

1.0.78

8 months ago

1.0.80

8 months ago

1.0.82

8 months ago

1.0.81

8 months ago

1.0.73

1 year ago

1.0.74

1 year ago

1.0.19

2 years ago

1.0.18

2 years ago

1.0.17

2 years ago

1.0.16

2 years ago

1.0.9

2 years ago

1.0.62

2 years ago

1.0.61

2 years ago

1.0.60

2 years ago

1.0.66

2 years ago

1.0.22

2 years ago

1.0.65

2 years ago

1.0.21

2 years ago

1.0.64

2 years ago

1.0.20

2 years ago

1.0.63

2 years ago

1.0.26

2 years ago

1.0.69

2 years ago

1.0.25

2 years ago

1.0.68

2 years ago

1.0.24

2 years ago

1.0.67

2 years ago

1.0.23

2 years ago

1.0.29

2 years ago

1.0.28

2 years ago

1.0.27

2 years ago

1.0.72

2 years ago

1.0.71

2 years ago

1.0.70

2 years ago

1.0.33

2 years ago

1.0.32

2 years ago

1.0.31

2 years ago

1.0.30

2 years ago

1.0.37

2 years ago

1.0.36

2 years ago

1.0.35

2 years ago

1.0.34

2 years ago

1.0.39

2 years ago

1.0.38

2 years ago

1.0.40

2 years ago

1.0.44

2 years ago

1.0.43

2 years ago

1.0.42

2 years ago

1.0.41

2 years ago

1.0.48

2 years ago

1.0.47

2 years ago

1.0.46

2 years ago

1.0.45

2 years ago

1.0.49

2 years ago

1.0.51

2 years ago

1.0.50

2 years ago

1.0.55

2 years ago

1.0.11

2 years ago

1.0.54

2 years ago

1.0.10

2 years ago

1.0.53

2 years ago

1.0.52

2 years ago

1.0.59

2 years ago

1.0.15

2 years ago

1.0.58

2 years ago

1.0.14

2 years ago

1.0.57

2 years ago

1.0.13

2 years ago

1.0.56

2 years ago

1.0.12

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago