abc/job-server-bundle
Symfony bundle for asynchronous distributed job processing via php-enqueue. Supports jobs, batches, sequences, free composition, status tracking, cancellation/restart, cron jobs (with AbcSchedulerBundle), plus a JSON REST API, PHP client, and OpenAPI docs.
queue:work), but introduces a Symfony-specific bundle with stateful job orchestration (sequences, batches, cancellations). This could complement Laravel’s native queues (e.g., jobs table) or replace them for complex workflows.php-enqueue (AMQP, Redis, etc.), which is transport-agnostic and integrates with Laravel’s queue drivers (e.g., database, redis). However, Laravel’s queue system is simpler for basic tasks; this bundle adds orchestration (e.g., job dependencies, retries, status tracking).jobs table or a new table.laravel-symfony-bundle) or manual integration (copying bundle logic) are possible. High effort for minimal gain unless leveraging Symfony’s ecosystem (e.g., for monolithic apps).illuminate/queue, while this bundle uses php-enqueue. Conflict risk if both are used simultaneously. Mitigation: Use php-enqueue as a standalone transport (e.g., for distributed workers) while keeping Laravel’s queues for simple tasks.jobs table is simpler and may not map cleanly. Migration path: Extend Laravel’s jobs table or create a parallel schema.AbcSchedulerBundle), adding complexity.php-enqueue (e.g., for RabbitMQ/Redis)? If not, does this add unnecessary complexity?jobs table be extended, or do you need a separate schema?| Step | Action | Technical Debt/Risk |
|---|---|---|
| 1 | Assess Alternatives | Evaluate if Laravel’s queues + custom logic (e.g., job tracking in jobs table) suffice. |
| 2 | Extract Core Logic | If integrating, refactor bundle logic into a Laravel-compatible package (e.g., laravel-job-orchestrator). |
| 3 | Transport Layer Setup | Configure php-enqueue as a standalone transport (e.g., Redis/RabbitMQ) alongside Laravel’s queues. |
| 4 | Database Schema | Decide: - Extend Laravel’s jobs table (risk: schema conflicts). - Create a parallel schema (risk: data consistency). |
| 5 | Symfony Bridge | Use laravel-symfony-bundle or manually instantiate bundle services in Laravel’s container. |
| 6 | API Integration | Expose the bundle’s REST API via Laravel’s routing (e.g., /api/jobs) or use it internally. |
| 7 | Worker Configuration | Run separate queue workers for the bundle (e.g., php artisan queue:work --queue=abc_jobs). |
| 8 | Testing | Validate: - Job status tracking. - Cancellation/restart. - API responses. - Worker stability. |
illuminate/queue and php-enqueue for the same jobs.php-enqueue for distributed workers and Laravel queues for simple tasks.ContainerInterface ≠ Laravel’s Illuminate\Container. Solution: Rebind services in Laravel’s container or use a facade pattern.abc_job_server:work) need supervisor/process management.php-enqueue supports distributed workers, but job state consistency depends on database locks.| Scenario | Impact | Mitigation |
|---|---|---|
| Database failure | Jobs stuck in "processing" state | Use transaction retries and **dead |
How can I help you explore Laravel packages today?