PidginMQ is a job queuing and task scheduling library for Node.js and JavaScript, built on PostgreSQL.
The library is heavily inspired by River
YARN:
yarn add pidginmq
NPM:
npm install pidginmq -S
- Node 18 or higher
- PostgreSQL 11 or higher
- Cron scheduling
- Recurring Jobs
- Deferred jobs
- Automatic retries (with exponential backoff)
- Configurable job timeouts
- Direct table access for bulk loads
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 migrationdown
- will undo last migrationcurrent
- return current migration version
For all 3 commands we need to supply database connection url.
pidginmq up postgresql://other@localhost/otherdb
Result:
PidginMQ database schema is migrated to version: 001
pidginmq down postgresql://other@localhost/otherdb
Result:
PidginMQ database schema is downgraded to version: none
pidginmq down postgresql://other@localhost/otherdb
Result:
Current database migration version: 001
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>(),
dbUri: 'postgresql://pidginmq:Password1@localhost:5432/pidginmq',
};
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',
});
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
PidginMQ is released under MIT License.