muxtorov98/rabbitmq-universal
Composer 安装命令:
composer require muxtorov98/rabbitmq-universal
包简介
Universal RabbitMQ Queue Worker for PHP frameworks (Laravel, Symfony, Yii2)
README 文档
README
Universal RabbitMQ Queue System — bu PHP 8+ uchun ishlab chiqilgan framework-agnostic kutubxona bo‘lib,
Laravel, Symfony va Yii2 loyihalarida xabar yuborish (publish) va qabul qilish (consume) jarayonlarini bir xil sintaksisda amalga oshirish imkonini beradi.
🚀 Asosiy xususiyatlar
✅ Laravel, Symfony va Yii2 bilan avtomatik moslashadi
✅ .env orqali sozlanadi — qo‘shimcha config talab etilmaydi
✅ Auto reconnect & retry mexanizmi
✅ QoS, prefetch, confirm mode (ACK) qo‘llab-quvvatlanadi
✅ PSR-4 autoload va PSR-3 logging
✅ Worker backgroundda doimiy ishlaydi (Supervisor yoki Docker bilan)
📦 O‘rnatish
composer require muxtorov98/rabbitmq-universal:v2.1.8 --ignore-platform-reqs
docker compose exec php composer require muxtorov98/rabbitmq-universal:v2.1.8 --ignore-platform-reqs
⚙️ .env konfiguratsiyasi
Loyha ildizida .env fayl yarating:
RABBITMQ_HOST='localhost' RABBITMQ_PORT=5672 RABBITMQ_USER='muxtorov' RABBITMQ_PASS='5upris#1eWata2ped' RABBITMQ_VHOST='/' RABBITMQ_PREFETCH=10 RABBITMQ_SSL=false # Worker handler fayllar joylashgan joy HANDLER_PATH='app/Handlers'
🧩 Umumiy Worker va Publisher misoli
🔧 Handler (har uchala framework uchun bir xil)
laravel Handler
app/Handlers/EmailHandler.php:
<?php namespace App\Handlers; use RabbitMQQueue\Core\QueueHandlerInterface; use RabbitMQQueue\Core\QueueChannel; use RabbitMQQueue\Core\RabbitPublisher; #[QueueChannel('notification_queue')] class NotificationHandler implements QueueHandlerInterface { public function handle(array $message): void { echo "📩 Notification received: " . json_encode($message, JSON_UNESCAPED_UNICODE) . PHP_EOL; } }
⚙️ Laravel integratsiyasi
🪄 1. Avtomatik yuklash
Paket avtomatik tarzda RabbitMQServiceProvider ni yuklaydi, qo‘shimcha ro‘yxatdan o‘tkazish talab etilmaydi.
🏃 2. Worker ishga tushirish
php artisan rabbit:worker
docker compose exec php php artisan rabbit:worker
⚙️ Yii2 integratsiyasi
⚙️ 1. console/config/main.php faylida controllerMap sozlovi
'controllerMap' => [ 'worker' => [ 'class' => \RabbitMQQueue\Frameworks\Yii2\WorkerController::class, ], ],
Yii2 Handler
console/Handlers/EmailHandler.php;
<?php namespace console\Handlers; use RabbitMQQueue\Core\QueueHandlerInterface; use RabbitMQQueue\Core\QueueChannel; use RabbitMQQueue\Core\RabbitPublisher; #[QueueChannel('email_queue')] class EmailHandler implements QueueHandlerInterface { public function handle(array $message): void { echo "📩 Email received: " . json_encode($message, JSON_UNESCAPED_UNICODE) . PHP_EOL; } }
🏃 2. Worker ishga tushirish
php yii worker/start
⚙️ Symfony integratsiyasi
⚙️ 1. services.yaml konfiguratsiyasi
config/services.yaml fayliga quyidagilarni qo‘shing:
RabbitMQQueue\Frameworks\Symfony\: resource: '../vendor/muxtorov98/rabbitmq-universal/src/Frameworks/Symfony/*' tags: [ 'console.command' ]
symfony Handler
src/Handlers/LogHandler.php;
<?php namespace App\Handlers; use RabbitMQQueue\Core\QueueHandlerInterface; use RabbitMQQueue\Core\QueueChannel; use RabbitMQQueue\Core\RabbitPublisher; #[QueueChannel('log_queue')] class LogHandler implements QueueHandlerInterface { public function handle(array $message): void { echo "📩 log received: " . json_encode($message, JSON_UNESCAPED_UNICODE) . PHP_EOL; } }
🏃 2. Worker ishga tushirish
php bin/console rabbit:worker:start
✉️ Publish qilish (hamma frameworklarda bir xil)
use RabbitMQQueue\Core\RabbitPublisher; $publisher = new RabbitPublisher(); $publisher->publish('email_queue', [ 'to' => 'user@example.com', 'subject' => 'Universal publish test!' ]);
laravel
- app/Console/Commands/RabbitPublishCommand.php
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use RabbitMQQueue\Core\RabbitPublisher; class RabbitPublishCommand extends Command { protected $signature = 'rabbit:publish {queue} {--data=}'; protected $description = 'Publish a message to RabbitMQ queue (from Laravel)'; public function handle() { $queue = $this->argument('queue'); $data = $this->option('data') ? json_decode($this->option('data'), true) : ['text'=>'Salom from Laravel']; $publisher = new RabbitPublisher(); $publisher->publish($queue, $data); $this->info("📩 Message published to queue '{$queue}' from Laravel: " . json_encode($data, JSON_UNESCAPED_UNICODE)); } }
php artisan rabbit:publish log_queue --data='{"status":"processed","to":"user@example.com","text":"Salom from Laravel"}'
symfony
- src/Command/RabbitPublishCommand.php
<?php namespace App\Command; use RabbitMQQueue\Core\RabbitPublisher; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; #[AsCommand( name: 'rabbit:publish', description: 'Publish a message to RabbitMQ queue' )] class RabbitPublishCommand extends Command { protected function configure(): void { $this ->addArgument('queue', InputArgument::REQUIRED, 'Queue name') ->addArgument('data', InputArgument::REQUIRED, 'JSON encoded data'); } protected function execute(InputInterface $input, OutputInterface $output): int { $queue = $input->getArgument('queue'); $jsonData = $input->getArgument('data'); $data = json_decode($jsonData, true); if (json_last_error() !== JSON_ERROR_NONE) { $output->writeln('<error>❌ JSON format xato:</error> ' . json_last_error_msg()); return Command::FAILURE; } $publisher = new RabbitPublisher(); $publisher->publish($queue, $data); $output->writeln("✅ Xabar jo'natildi: <info>$queue</info>"); return Command::SUCCESS; } }
php bin/console rabbit:publish notification_queue '{"event":"user_registered","user_id":12345,"text":"Salom from Symfony"}'
yii
- console/controllers/RabbitPublishController.php
<?php namespace console\controllers; use yii\console\Controller; use RabbitMQQueue\Core\RabbitPublisher; use yii\helpers\Json; class RabbitPublishController extends Controller { public $data; public function options($actionID) { return ['data']; } public function actionIndex($queue) { $data = $this->data ? Json::decode($this->data) : []; $publisher = new RabbitPublisher(); $publisher->publish($queue, $data); $this->stdout("Message published to queue '{$queue}' from Yii2\n"); } }
php yii rabbit-publish email_queue --data='{"to":"user@example.com","subject":"Yii2 to Laravel"}'
muxtorov98/rabbitmq-universal 适用场景与选型建议
muxtorov98/rabbitmq-universal 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 22 次下载、GitHub Stars 达 1, 最近一次更新时间为 2025 年 10 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「queue」 「symfony」 「rabbitmq」 「AMQP」 「laravel」 「worker」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 muxtorov98/rabbitmq-universal 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 muxtorov98/rabbitmq-universal 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 muxtorov98/rabbitmq-universal 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Work with RabbitMQ in Laravel.
Microservice RPC through message queues.
PHP AMQP Binding Library
The bundle for easy using json-rpc api on your project
A Laravel package to monitor queue jobs.
Bundle Symfony DaplosBundle
统计信息
- 总下载量: 22
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 19
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-10-15