enqueue/mongodb package provides a MongoDB-based message broker for Laravel/PHP applications, enabling asynchronous task processing via Enqueue (a PHP message queue library). This is a good fit for:
Illuminate\Queue) can leverage Enqueue as a drop-in transport, making this a viable alternative to database queues (database driver) or Redis.enqueue/laravel).
// config/queue.php
'connections' => [
'mongodb' => [
'driver' => 'enqueue',
'dsn' => 'mongodb://user:pass@localhost:27017',
'queue' => 'default',
'options' => [
'exchange' => ['name' => 'laravel_jobs', 'type' => 'direct'],
],
],
],
serialize() by default, which may cause issues with:
enqueue/serialization-json or enqueue/serialization-php for better compatibility.| Risk Area | Assessment | Mitigation Strategy |
|---|---|---|
| Stale/Unmaintained | Last release in 2018, no recent activity. | Evaluate fork/maintenance status; consider alternatives (e.g., php-amqplib). |
| MongoDB Schema | No built-in schema validation for queue messages. | Implement custom validation in job handlers or use MongoDB’s schema validation. |
| Performance | MongoDB may not match Redis/RabbitMQ for low-latency use cases. | Benchmark against existing queue drivers; optimize indexes on _id and delayed_at. |
| Laravel Compatibility | Potential conflicts with Laravel’s queue retry logic. | Test with enqueue/laravel bridge; monitor job failures. |
| Dependency Bloat | Adds Enqueue as a dependency (~50MB+ with dependencies). | Justify ROI vs. alternatives (e.g., Laravel’s database queue). |
database, redis, or sync with mongodb via Enqueue.ShouldQueue interface; Enqueue will handle serialization.enqueue:consume) alongside Laravel’s queue worker.| Component | Compatibility Notes |
|---|---|
| PHP 8.x | Unverified (last release predates PHP 8). Requires testing. |
| Laravel 9/10 | Works via enqueue/laravel bridge, but may need adjustments for new queue APIs. |
| MongoDB 6.x | Assumes MongoDB 3.6+ (last release’s target). May need driver updates. |
| Docker | Easy to containerize; ensure MongoDB and worker share a network. |
enqueue/mongodb + enqueue/laravel.enqueue:consume mongodb://dsn).emails).config/queue.php to use mongodb as default.failed_jobs collection or Sentry).enqueue/laravel provides Laravel-specific integrations (e.g., Queue::later() support).retry-after but may need custom logic for exponential backoff.failed_jobs collection (similar to Laravel’s failed_jobs table).priority field).delayed_at field (manual setup needed).queue, body, and delayed_at.composer require enqueue/mongodb enqueue/laravel).config/queue.php with MongoDB DSN.laravel_jobs).[program:laravel-queue-worker]
command=php /path/to/artisan enqueue:consume mongodb://user:pass@mongo:27017/laravel_jobs
php artisan queue:work --queue=mongodb.laravel_jobs collection.enqueue/enqueue (core library) for updates.laravel_jobs, failed_jobs) require manual schema awareness.mongock for schema migrations.stderr by default. Configure structured logging (e.g., Monolog) for observability.enqueue/serialization-json.pending_jobs count.find, insert, update, delete on collections.enqueue:list (list queues).enqueue:consume --verbose (debug worker).ab or k6.queue and priority fields for fast job retrieval.How can I help you explore Laravel packages today?