Skip to content

codefresh-io/cf-queue

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cf-queue - Queue wrapper for nats.io server

Creating a queue reference

var Queue   = require('cf-queue');

var options = {
  servers: [
    'nats://localhost:4222'
  ]
};

var queue = new Queue('queue-name', options);

The same initalization code is used by the clien and worker sides.

How to use it

Client side

When a client would like to push request into the queue it should use the queue request function and pass the request object.

var request = {
  id: 1,
  message: 'hello'
}

queue.request(request)
  .then(function(response) {
    console.log(response);
  })
  .catch(function(err) {
      console.error(err);
  });

Worker side

queue.process(function(job, callback) {
  var request = job.request;
  
  var response = {
    id: request.id,
    message: request.message + ' world !!!'
  };
  
  callback(null, response);
}

As first parameter for the callback you can return error message or object that will be sent back to the client as error.

Progress

Client side

When a client would like to push request into the queue it should use the queue request function and pass the request object.

var request = {
  id: 1,
  message: 'hello'
}

queue.request(request)
  .then(function(response) {
    console.log(response);
  })
  .progress(function(message) {
    console.log('PROGRESS >>> ' + message);
  })
  .catch(function(err) {
      console.error(err);
  });

Worker side

queue.process(function(job, callback) {
  var request = job.request;
  
  var response = {
    id: request.id,
    message: request.message + ' world !!!'
  };
  
  var counter = 0;
  var sendProgress = function() {
    counter++;
    job.progress('Step ' + counter + ' in ' + request.id);
  
    if (counter === 5) {
      callback(null, response);
    } else {
      setTimeout(sendProgress, 500);
    }
  };
  sendProgress();
}

Docker

You can see example of how to use the queue in Docker in the attached Dockerfile and docker compose file. The docker compose file load one client, two workers and the queue server.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published