0.0.7 • Published 10 months ago

pidginmq v0.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

PidginMQ

PidginMQ

PidginMQ is a job queuing and task scheduling library for Node.js and JavaScript, built on PostgreSQL.

The library is heavily inspired by River

PostgreSQL Version npm version

Documentation

Installation

YARN:

yarn add pidginmq

NPM:

npm install pidginmq -S

Requirements

  • Node 18 or higher
  • PostgreSQL 11 or higher

Features

  • Cron scheduling
  • Recurring Jobs
  • Deferred jobs
  • Automatic retries (with exponential backoff)
  • Configurable job timeouts
  • Direct table access for bulk loads

Database initialization

PidginMQ requires specific database tables to function properly. To facilitate this, PidginMQ includes a command-line tool that executes the necessary migrations.

When you install the library, the CLI tool is installed automatically

CLI tool containse 3 commands:

  • up - running next migration
  • down - will undo last migration
  • current - return current migration version

For all 3 commands we need to supply database connection url.

pidginmq up

pidginmq up postgresql://other@localhost/otherdb

Result:

PidginMQ database schema is migrated to version: 001

pidginmq down

pidginmq down postgresql://other@localhost/otherdb

Result:

PidginMQ database schema is downgraded to version: none

pidginmq current

pidginmq down postgresql://other@localhost/otherdb

Result:

Current database migration version: 001

Examples

Initialize the schema for PidginMQ in the database by running the CLI tool.

Create a client:

    const options = {
      workers: new Workers(),
      queues: new Map<string, QueueConfig>(),
      dbConfig: {
        host: 'localhost',
        port: 5432,
        user: 'pidginmq',
        password: 'Password1',
        database: 'pidginmq',
        ssl: false,
      },
    };
    this.client = new Client(options);
    this.client.start();

Stop the client:

this.client.stop();

Add a worker:

this.client.addWorker('test', (job) => {
  console.info(`Processing job:`, JSON.stringify(job));
});

Add a job:

await this.client.addJob({
  kind: 'test',
  queue: 'test-queue',
});

Contributing

To setup a development environment for this library:

git clone https://github.com/ivanvs/pidginmq.git
npm install

To run the test suite and code coverage:

npm run test:cov

License

PidginMQ is released under MIT License.

0.0.3

10 months ago

0.0.5

10 months ago

0.0.4

10 months ago

0.0.7

10 months ago

0.0.6

10 months ago

0.0.2

12 months ago

0.0.1

12 months ago