Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/garbetjie/laravel-database-queue

Laravel queue driver for the database with optimistic queue locking.
https://github.com/garbetjie/laravel-database-queue

database laravel laravel-queue

Last synced: 19 days ago
JSON representation

Laravel queue driver for the database with optimistic queue locking.

Awesome Lists containing this project

README

        

# Laravel Database Queue Driver

A database queue driver for Laravel with optimistic locking and job count caching. Heavily inspired by the article at
https://ph4r05.deadcode.me/blog/2017/12/23/laravel-queues-optimization.html, and the relevant package at
https://github.com/ph4r05/laravel-queue-database-ph4.

## Installation

1. Install this package using composer:
```
composer require garbetjie/laravel-database-queue
```

2. Run the migration to alter the jobs table.
If you haven't yet run the command to create the jobs table, do so first (`./artisan queue:table`).
```
php artisan garbetjie:database-queue:table
php artisan migrate
```

3. Replace the `database` driver in your queue connection with `database-garbetjie`:
```php
[
'database' => [
'driver' => 'database-garbetjie',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 60,
'prefetch' => 5,
'shuffle' => true,
]
],
];
```

4. Optionally, you can also create a "cache" table for job counts.

If you have many jobs in your queue, running a query like `SELECT queue, COUNT(*) FROM jobs GROUP BY 1` can take a
long time to yield results. Run the following command to generate migrations that will create a job count cache table, and will keep the job counts
updated through the use of triggers.
```
php artisan garbetjie:database-queue:table-job-counts
php artisan migrate
```

### Configuration

This queue driver extends the default `database` queue driver. As a result, the configuration for this queue driver is
exactly the same as the original database queue driver (https://laravel.com/docs/7.x/queues#driver-prerequisites), except
for some additional configuration options:

| Name | Type | Default | Description |
|----------|------|---------|-------------------------------------------------------------------------------------------------------------------------------------------|
| prefetch | int | 5 | Determines how many queue jobs to fetch before attempting to reserve one. Should ideally default to the number of workers for your queue. |
| shuffle | bool | true | Whether or not to shuffle fetched jobs before attempting to reserve one. |

## Changelog

* **1.3.2**
* Exclude `laravel/database` versions `>=7.30.3 <8.0`, due to Dependabot alert.
* **1.3.1**
* Exclude `laravel/database` versions `>= 8.0 <8.22.1`, due to Dependabot alert.

* **1.3.0**
* Add support for Laravel 8.