Skip to content

switon-php/queue

Repository files navigation

Switon Queue Package

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.

About

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

Topics

Resources

License

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages