GithubHelp home page GithubHelp logo

node-rabbitmq-worker's Introduction

@emartech/rabbitmq-worker

BaseWorker

Automatically logs worker failures with context and elapsed time on success run.

Methods

retry(message, errorCode)

Re-queues the currently processed message for retry.

queueWorker(workerId, options)

Starts a new worker with the given worker id.

To set required keys in the options, set requiredKeys in the worker's configuration as an array.

Example

const { BaseWorker } = require('@emartech/rabbitmq-worker');

class MyWorker extends BaseWorker {

  async run(options) {
    console.log(options); // { option: 'foo' }
    console.log(this.config.foo); // bar
    
    if (errorHappened) {
      this.retry('Something happened', 400);
    }
    
    
    this.queueWorker('NextWorker', { newVar: 'foo' });
  }

}

MyWorker
  .create('my-worker-log-namespace')
  .execute({foo: 'bar'}, { option: 'foo' });

Ignition

Starts the given type of worker to consume a RabbitMQ queue.

A sample worker starting script my-worker.js:

const { Ignition } = require('@emartech/rabbitmq-worker');
const workerPool = require('./worker-pool');

Ignition.create(workerPool).start('MyWorker');

RabbitMq

See @emartech/rabbitmq-client for more information.

Configuration

@emartech/rabbitmq-worker uses node-config `package for configuration.

Required configuration example

{
  "RabbitMQ": "rabbitmq://connection",
  "Workers": {
    "MyWorker": { // All worker requires a config for it to run
      "queueName": "my-worker", // The queue's name to get options (message)
      "concurrency": 3, // Number of worker instances to start
      "prefetchCount": 10, // Prefetch count for consumer
      "autoNackTime": 60000, // Auto time-out for worker
      "customConfigVar": "foo"
    }
  }
}

Worker pool example

{
  MyWorker: require('./workers/my-worker')
}

node-rabbitmq-worker's People

Contributors

bankyadam avatar jzsfkzm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.