a-mazalov / kali-message-broker
Messaging between microservices
Requires
- anik/laravel-amqp: ^1.3
Requires (Dev)
- orchestra/testbench: ^7.13
- phpunit/phpunit: ^9.5
- dev-main
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.0
- v3.1.0
- v3.0.1
- v3.0.0
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-feat/dubrava-round-period-notification
- dev-feat/statements
- dev-feat/kg-dto
- dev-centrifugo
This package is auto-updated.
Last update: 2024-10-23 12:15:44 UTC
README
Messages between services using the rabbitmq broker
Запуск в dev container VScode
- Open project
- F1 -> Dev Containers: Rebuild and Reopen in Container
Запуск тестов
composer test
Публикация сообщений в RabbitMQ
- Необходимо указать подключение к RabbitMQ AMQP
Где AMQP_EXCHANGE_NAME
имя общего обменника
AMQP_HOST=rabbitmq AMQP_PORT=5672 AMQP_USER=root AMQP_PASSWORD=root AMQP_VHOST=/ AMQP_QUEUE_NAME= AMQP_EXCHANGE_NAME=incoming_web
- Отправка через Notification
Реализовать класс уведомления с каналом RabbitmqChannel
или воспользоваться существующим классом RabbitmqMessageNotification
use Kali\MessageBroker\Messages\Data\Test; use Kali\MessageBroker\Notifications\RabbitmqMessageNotification; $testData = new Test(email: "djoni@google.com", message: "Hello World!"); $routing_key = "access" // очередь сервиса в который необходимо отправить сообщение. Роутинг настраивается через Exchange в админке RabbitMQ Notification::route("rabbitmq", $routing_key)->notify( new RabbitmqMessageNotification("TestJob", $testData->toResource()) );
Получение сообщений из RabbitMQ
Для получения сообщений из Rabbitmq необходимо подключение и обработчик очереди php artisan rabbitmq:consume
-
Требуется дополнительная установка пакета laravel-queue-rabbitmq
-
Необходимо указать подключение к rabbitmq и прослушиваемую очередь
RABBITMQ_QUEUE
RABBITMQ_HOST=rabbitmq RABBITMQ_PORT=5672 RABBITMQ_USER=root RABBITMQ_PASSWORD=root RABBITMQ_VHOST=/ RABBITMQ_QUEUE=access_queue
- Добавить конфигурацию в
config/queue.php
(актуальная конфигурация в документации пакета)
'rabbitmq_consumer' => [ 'driver' => 'rabbitmq', 'queue' => env('RABBITMQ_QUEUE', 'default'), 'connection' => PhpAmqpLib\Connection\AMQPLazyConnection::class, 'hosts' => [ [ 'host' => env('RABBITMQ_HOST', '127.0.0.1'), 'port' => env('RABBITMQ_PORT', 5672), 'user' => env('RABBITMQ_USER', 'guest'), 'password' => env('RABBITMQ_PASSWORD', 'guest'), 'vhost' => env('RABBITMQ_VHOST', '/'), ], ], 'options' => [ 'ssl_options' => [ 'cafile' => env('RABBITMQ_SSL_CAFILE', null), 'local_cert' => env('RABBITMQ_SSL_LOCALCERT', null), 'local_key' => env('RABBITMQ_SSL_LOCALKEY', null), 'verify_peer' => env('RABBITMQ_SSL_VERIFY_PEER', true), 'passphrase' => env('RABBITMQ_SSL_PASSPHRASE', null), ], 'queue' => [ 'job' => \Kali\MessageBroker\Worker\ConsumeRabbitMQ::class, ], ], /* * Set to "horizon" if you wish to use Laravel Horizon. */ 'worker' => env('RABBITMQ_WORKER', 'default'), ],
- Реализовать класс обработчика сообщений и указать его в конфигурации
'queue' => [ 'job' => \Kali\MessageBroker\Worker\ConsumeRabbitMQ::class, ],
-
Выполнить
php artisan vendor:publish
и выбратьKali\MessageBroker\Providers\MsgServiceProvider
-
Заполнить
config/message.php
для соотвествия имени входящего сообщения и выполнения требуемой задачи -
Запустить обработчки
php artisan rabbitmq:consume rabbitmq_consumer
rabbitmq_consumer - имя подключение в
config/queue.php