PHPackages                             muxtorov98/yii2-rabbitmq-queue - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. muxtorov98/yii2-rabbitmq-queue

ActiveLibrary[Queues &amp; Workers](/categories/queues)

muxtorov98/yii2-rabbitmq-queue
==============================

RabbitMQ Queue Worker for Yii2 Advanced (universal package)

v1.1.0(7mo ago)230MITPHPPHP ^8.0

Since Sep 8Pushed 7mo agoCompare

[ Source](https://github.com/Muxtorov98/yii2-rabbitmq-queue)[ Packagist](https://packagist.org/packages/muxtorov98/yii2-rabbitmq-queue)[ RSS](/packages/muxtorov98-yii2-rabbitmq-queue/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (6)Used By (0)

Yii2 RabbitMQ Queue Worker
==========================

[](#yii2-rabbitmq-queue-worker)

**RabbitMQ Queue Worker for Yii2 Advanced microservices** (universal package)

Ushbu paket Yii2 loyihasida RabbitMQ queue workerlarini yaratish va boshqarish uchun mo‘ljallangan.

---

Talablar
--------

[](#talablar)

- PHP &gt;= ^8.1
- Yii2 &gt;= 2.0.13

---

O‘rnatish
---------

[](#ornatish)

- RabbitMQ ni ishga tushurish uchun quyidagi URL dan foydalaning:

Composer orqali:

```
composer require muxtorov98/yii2-rabbitmq-queue:v1.1.0
```

Konfiguratsiya
--------------

[](#konfiguratsiya)

- .env

```
RABBITMQ_HOST=localhost
RABBITMQ_PORT=5672
RABBITMQ_USER=admin
RABBITMQ_PASSWORD=admin
RABBITMQ_VHOST=/
```

- common/config/main.php fayilini sozlang: `Publisher (xabar yuborish)`

```
return [

    'components' => [
        'rabbitPublisher' => [
            'class' => RabbitMQQueue\Components\RabbitPublisher::class,
            'host' => env('RABBITMQ_HOST'),
            'port' => env('RABBITMQ_PORT'),
            'user' => env('RABBITMQ_USER'),
            'password' => env('RABBITMQ_PASSWORD'),
            'vhost' => '/',
        ],
    ],
```

- console/config/main.php faylini sozlang: `Consumer / Worker (xabarlarni qabul qilish)`

```
use RabbitMQQueue\Controllers\WorkerController;
use RabbitMQQueue\Registry\HandlerRegistry;
use RabbitMQQueue\Handlers\QueueHandlerInterface;

return [

    'components' => [
        'rabbitmq' => [
            'class' => RabbitMQQueue\Components\RabbitMQConnection::class,
            'host' => env('RABBITMQ_HOST'),
            'port' => env('RABBITMQ_PORT'),
            'user' => env('RABBITMQ_USER'),
            'password' => env('RABBITMQ_PASSWORD'),
            'vhost' => '/',
        ],
    ],

    'controllerMap' => [
        'worker' => WorkerController::class,
    ],

    'container' => [
        'definitions' => [
            HandlerRegistry::class => function(\yii\di\Container $container) {
                $handlers = [];
                foreach (glob(__DIR__ . '/../../console/handlers/*Handler.php') as $file) {
                    $class = 'console\\handlers\\' . basename($file, '.php');
                    if (class_exists($class) && is_subclass_of($class, QueueHandlerInterface::class)) {
                        $handlers[] = $container->get($class);
                    }
                }
                return new HandlerRegistry($handlers);
            },
        ],
    ],
];
```

Handler yaratish
================

[](#handler-yaratish)

- Workerlar `console/handlers` papkasida bo‘lishi shart. Har bir worker klass `*Handler.php` nomi bilan va `QueueHandlerInterface` ni implement qilishi kerak.

Misol:
======

[](#misol)

- Xabar yuborish (Publisher)

```
Yii::$app->rabbitPublisher->publish('default_queue', ['message' => 'Hello queue']);
```

- Consumer / Worker (xabarlarni qabul qilish)

```
