Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ivanvs/pidginmq
PidginMQ is a job queu and task scheduling library for Node.js and JavaScript, built on PostgreSQL.
https://github.com/ivanvs/pidginmq
job-queue job-scheduler pidgin-queue pidginmq pidginmq-queue postgre-queue postgresql worker-queue
Last synced: about 2 months ago
JSON representation
PidginMQ is a job queu and task scheduling library for Node.js and JavaScript, built on PostgreSQL.
- Host: GitHub
- URL: https://github.com/ivanvs/pidginmq
- Owner: ivanvs
- License: mit
- Created: 2024-03-12T23:30:19.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-09-08T18:07:14.000Z (4 months ago)
- Last Synced: 2024-09-09T19:56:42.348Z (4 months ago)
- Topics: job-queue, job-scheduler, pidgin-queue, pidginmq, pidginmq-queue, postgre-queue, postgresql, worker-queue
- Language: TypeScript
- Homepage: https://pidginmq.com/
- Size: 1.06 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PidginMQ
![PidginMQ](/images/pidginmq.png)
PidginMQ is a job queuing and task scheduling library for Node.js and JavaScript, built on PostgreSQL.
The library is heavily inspired by [River](https://riverqueue.com/)
[![PostgreSQL Version](https://img.shields.io/badge/PostgreSQL-11+-blue.svg?maxAge=2592000)](http://www.postgresql.org)
[![npm version](https://badge.fury.io/js/pidginmq.svg)](https://badge.fury.io/js/pidginmq)[Documentation](https://pidginmq.com)
## Installation
YARN:
```bash
yarn add pidginmq
```NPM:
```bash
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 versionFor all 3 commands we need to supply [database connection url](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING-URIS).
### pidginmq up
```bash
pidginmq up postgresql://other@localhost/otherdb
```Result:
```bash
PidginMQ database schema is migrated to version: 001
```### pidginmq down
```bash
pidginmq down postgresql://other@localhost/otherdb
```Result:
```bash
PidginMQ database schema is downgraded to version: none
```### pidginmq current
```bash
pidginmq down postgresql://other@localhost/otherdb
```Result:
```bash
Current database migration version: 001
```## Examples
Initialize the schema for PidginMQ in the database by running the CLI tool.
Create a client:
```js
const options = {
workers: new Workers(),
queues: new Map(),
dbUri: 'postgresql://pidginmq:Password1@localhost:5432/pidginmq',
};
this.client = new Client(options);
this.client.start();
```Stop the client:
```js
this.client.stop();
```Add a worker:
```js
this.client.addWorker('test', (job) => {
console.info(`Processing job:`, JSON.stringify(job));
});
```Add a job:
```js
await this.client.addJob({
kind: 'test',
queue: 'test-queue',
});
```## Contributing
To setup a development environment for this library:
```bash
git clone https://github.com/ivanvs/pidginmq.git
npm install
```To run the test suite and code coverage:
```bash
npm run test:cov
```# License
PidginMQ is released under [MIT License](https://opensource.org/licenses/MIT).