ahmadrezafatemikia / laravel-ampq
Elegant and minimal RabbitMQ (AMPQ) integration for Laravel 10–12, powered by php-amqplib.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/ahmadrezafatemikia/laravel-ampq
Requires
- php: ^8.2
- illuminate/support: ^10.0|^11.0|^12.0
- php-amqplib/php-amqplib: ^3.6
This package is auto-updated.
Last update: 2025-11-12 09:57:12 UTC
README
Elegant, minimal, and production‑ready RabbitMQ (AMQP) integration for Laravel 10–12, powered by
php-amqplib.
Define channels once, publish/consume everywhere — Laravel‑native, queue‑agnostic, and built for real apps.
✨ Highlights
- 🧩 Laravel‑native API —
Ampq::publish()/Ampq::consume()+ helperampq_publish() - ⚙️ Config‑driven channels — queue + exchange + routing in
config/ampq.php - 🔁 DLX/DLQ built‑in — dead‑letter exchange/queue via config (opt‑in)
- ⏳ Prefetch/QoS — tune consumer throughput per connection
- 🪶 Lightweight — depends only on
php-amqplib/php-amqplib - 🛠 Artisan commands —
ampq:publishandampq:consumefor quick ops - 🧯 Safe defaults — persistent messages, clean shutdown, idempotency‑friendly
Note: Package name intentionally uses AMPQ spelling.
📦 Install
composer require ahmadrezafatemikia/laravel-ampq php artisan vendor:publish --tag=ampq-config
⚙️ Configuration
config/ampq.php
return [ 'connections' => [ 'default' => [ 'host' => env('AMPQ_HOST', '127.0.0.1'), 'port' => (int) env('AMPQ_PORT', 5672), 'user' => env('AMPQ_USER', 'guest'), 'password' => env('AMPQ_PASSWORD', 'guest'), 'vhost' => env('AMPQ_VHOST', '/'), 'prefetch' => (int) env('AMPQ_PREFETCH', 10), 'dlx' => [ 'enabled' => (bool) env('AMPQ_DLX_ENABLED', false), 'exchange' => env('AMPQ_DLX_EXCHANGE', 'app.dlx'), 'routing' => env('AMPQ_DLX_ROUTING', 'dead'), 'queue' => env('AMPQ_DLX_QUEUE', 'app.dlq'), 'type' => env('AMPQ_DLX_TYPE', 'direct'), ], ], ], 'channels' => [ // Example 'emails' => [ 'connection' => 'default', 'queue' => 'emails', 'exchange' => 'app.events', 'routing' => 'emails.welcome', 'type' => 'direct', ], ], ];
.env
AMPQ_HOST=127.0.0.1 AMPQ_PORT=5672 AMPQ_USER=appuser AMPQ_PASSWORD=secret AMPQ_VHOST=/app AMPQ_PREFETCH=10 AMPQ_DLX_ENABLED=true AMPQ_DLX_EXCHANGE=app.dlx AMPQ_DLX_ROUTING=dead AMPQ_DLX_QUEUE=app.dlq
🧠 Usage
Publish (PHP)
use Ampq; Ampq::publish([ 'event' => 'user.registered', 'user_id' => 42, 'timestamp' => now(), ], 'emails');
Publish (CLI)
php artisan ampq:publish emails '{"event":"user.registered","user_id":42}'
Consume
php artisan ampq:consume emails
🧰 Helper
ampq_publish(['hello' => 'world'], 'emails');
🧵 Supervisor (Production)
[program:ampq-emails] command=php /var/www/app/artisan ampq:consume emails numprocs=2 autostart=true autorestart=true stdout_logfile=/var/log/supervisor/ampq-emails.log stopasgroup=true killasgroup=true
🧱 Under the Hood
- Namespace:
AhmadrezaFatemikia\LaravelAmpq - Facade:
Ampq - Commands:
php artisan ampq:publish {channel} {payload}php artisan ampq:consume {channel}
📜 License
MIT