pidginmq
v0.0.7
Published
Fast and reliable background jobs in Typescript
Downloads
17
Maintainers
Readme
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
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 migrationdown
- will undo last migrationcurrent
- 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.