switon/queue

Redis-backed job queue with runner discovery and worker commands for Switon Framework

Maintainers

Package info

github.com/switon-php/queue

Documentation

pkg:composer/switon/queue

Statistics

Installs: 2

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-06-06 13:43 UTC

This package is auto-updated.

Last update: 2026-06-07 04:39:21 UTC


README

CI PHP 8.3+

Switon's Redis-backed queue transport for named queues, job discovery, delayed delivery, and worker/CLI execution.

Highlights

  • Named queues: push, pull, consume, and delay all use logical queue names.
  • Envelope metadata: each job keeps its body, headers, message id, queue name, and timestamp together.
  • Job discovery: #[Queued] binds runner jobs to logical queues.
  • Delayed delivery: delayed jobs can be surfaced back into the active queue.
  • Worker and stats flow: CLI commands cover queue:stats, queue:push, queue:run, queue:work, and queue:migrate-due.

Installation

composer require switon/queue

Quick Start

use Switon\Core\Attribute\Autowired;
use Switon\Core\RunnerInterface;
use Switon\Queue\Attribute\Queued;
use Switon\Queue\QueueEnvelope;
use Switon\Queue\QueueInterface;

class UserService
{
    #[Autowired] protected QueueInterface $queue;

    public function register(int $userId): void
    {
        $this->queue->push('emails', QueueEnvelope::of(['userId' => $userId]));
    }
}

#[Queued('emails')]
class SendWelcomeEmail implements RunnerInterface
{
    /**
     * @param QueueEnvelope $payload
     */
    public function run(mixed $payload): mixed
    {
        $userId = $payload->body['userId'] ?? null;

        return null;
    }
}

Docs: https://docs.switon.dev/latest/queue

License

MIT.