isabella232 / node-rabbitmq-worker

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

@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')
}

About

License:MIT License


Languages

Language:JavaScript 100.0%