- Can I use symfony/amqp-messenger directly in Laravel without Symfony Messenger?
- No, this package requires Symfony Messenger as a dependency. You’ll need to integrate `symfony/messenger` alongside Laravel, which may require refactoring job classes to use Symfony’s `AsMessage` attribute instead of Laravel’s `ShouldQueue`.
- What Laravel versions support symfony/amqp-messenger?
- The package itself doesn’t enforce Laravel version constraints, but it depends on Symfony Messenger (v6+). Laravel apps must use Symfony Messenger as a standalone component, bypassing Laravel’s native queue system. Tested best with Laravel 9+.
- How do I configure delayed quorum queues in RabbitMQ for Laravel?
- Delayed quorum queues require RabbitMQ 4.0+, the `x-delayed-type` plugin, and quorum queue support enabled. Configure via Symfony Messenger’s `DelayStamp` and RabbitMQ’s `x-delayed-message` policy. Laravel’s `delay()` method won’t work—use `$bus->dispatch($message, [new DelayStamp(seconds)])` instead.
- Is symfony/amqp-messenger better than Laravel’s Redis queue for background jobs?
- For simple background jobs, Laravel’s Redis queue is lighter and more integrated. This package excels for **delayed, durable workflows** (e.g., 24-hour payment processing) or **saga patterns** with compensating actions, thanks to RabbitMQ’s quorum queues and AMQP reliability guarantees.
- How do I replace Laravel’s `queue:work` with symfony/amqp-messenger?
- Use `symfony-messenger:consume` instead. Configure a worker via Symfony’s CLI command, targeting your AMQP transport. Note: This won’t process Laravel’s native `ShouldQueue` jobs—you must migrate those to Symfony Messenger’s `AsMessage` classes first.
- What are the risks of using quorum queues in production?
- Quorum queues replicate data across nodes, increasing disk usage and risking silent failures if storage is full. Unlike classic queues, they don’t auto-recover. Monitor disk space and replication lag closely, especially in high-volume environments.
- Can I mix symfony/amqp-messenger with Laravel’s database queue?
- No, this package replaces Laravel’s queue system entirely. You’d need to migrate all jobs to Symfony Messenger’s transport layer. For hybrid setups, consider using Symfony Messenger only for AMQP-specific workflows (e.g., delayed tasks) while keeping Laravel queues for other workloads.
- How do I handle message retries with symfony/amqp-messenger?
- Use Symfony Messenger’s retry middleware (e.g., `RetryStamp`). Configure max retries and delay strategies in your transport configuration. Unlike Laravel’s queue retries, this leverages AMQP’s dead-letter exchanges for failed messages.
- What’s the performance impact of quorum queues vs. classic RabbitMQ queues?
- Quorum queues add ~10–50ms latency vs. classic queues due to replication overhead. For high-throughput workloads (e.g., 10K+ messages/hour), test under load—Symfony’s AMQP bridge may hold connections open longer than Laravel’s workers, increasing resource usage.
- Are there alternatives to symfony/amqp-messenger for Laravel + RabbitMQ?
- For Laravel-native RabbitMQ support, consider `vladimir-yuldashev/laravel-queue-rabbitmq` or `php-amqplib` with custom workers. However, these lack Symfony Messenger’s built-in features like delayed quorum queues, retry middleware, and failure transports. This package offers deeper integration if you’re already using Symfony components.