jeffersongoncalves/laravel-queue-management

Manage Laravel's database queue tables (jobs, failed_jobs, job_batches) through models and a service layer.

Maintainers

Package info

github.com/jeffersongoncalves/laravel-queue-management

pkg:composer/jeffersongoncalves/laravel-queue-management

Fund package maintenance!

jeffersongoncalves

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

1.0.0 2026-06-24 21:41 UTC

This package is auto-updated.

Last update: 2026-06-24 21:55:12 UTC


README

Laravel Queue Management

Laravel Queue Management

Latest Version on Packagist run-tests Fix PHP code style issues PHPStan Total Downloads

A headless toolkit for managing Laravel's database-driver queue tables (jobs, failed_jobs, job_batches). It provides Eloquent models for each table plus a small service layer (and facade) to retry, forget and flush failed jobs and delete pending jobs.

It contains no UI framework of its own. UI plugins (such as a Filament plugin) can depend on this package for the underlying models and operations.

Requirements

  • PHP 8.2+
  • Laravel 11, 12, or 13

Installation

composer require jeffersongoncalves/laravel-queue-management

The package uses Laravel's auto-discovery, so the service provider and the QueueManagement facade are registered automatically.

Publish Configuration (optional)

php artisan vendor:publish --tag=queue-management-config

This package reads from Laravel's existing queue tables. It does not ship migrations — make sure your application has run Laravel's built-in queue migrations (jobs, failed_jobs, job_batches).

Configuration

The configuration file (config/queue-management.php) lets you map the queue table names if your application uses custom ones:

return [
    'tables' => [
        'jobs' => 'jobs',
        'failed_jobs' => 'failed_jobs',
        'job_batches' => 'job_batches',
    ],
];

Usage

Models

use JeffersonGoncalves\QueueManagement\Models\Job;
use JeffersonGoncalves\QueueManagement\Models\FailedJob;
use JeffersonGoncalves\QueueManagement\Models\JobBatch;

// Pending jobs
$pending = Job::query()->get();
$first = $pending->first();
$first->displayName; // e.g. "App\Jobs\SendEmail"
$first->maxTries;    // int
$first->delay;       // int

// Failed jobs
$failed = FailedJob::query()->get();
$failed->first()->failed_at; // Carbon instance

// Job batches (options are transparently base64 decoded)
$batches = JobBatch::query()->get();
$batches->first()->options;

Service layer

Resolve the QueueManager from the container:

use JeffersonGoncalves\QueueManagement\QueueManager;

$manager = app(QueueManager::class);

// Retry one or more failed jobs (by failed_jobs.id).
// When queue.failed.driver is "database-uuids" the uuid is used automatically.
$manager->retry(1, 2, 3);

// Retry every failed job
$manager->retryAll();

// Forget a single failed job by id or uuid
$manager->forget(1);

// Flush all failed jobs
$manager->flush();

// Delete a pending job from the jobs table by id
$manager->deletePendingJob(10);

Facade

use JeffersonGoncalves\QueueManagement\Facades\QueueManagement;

QueueManagement::retry(1, 2, 3);
QueueManagement::retryAll();
QueueManagement::forget(1);
QueueManagement::flush();
QueueManagement::deletePendingJob(10);

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Credits

License

The MIT License (MIT). Please see License File for more information.