PHP code example of kakaprodo / laravel-message-broker

1. Go to this page and download the library: Download kakaprodo/laravel-message-broker library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

kakaprodo / laravel-message-broker example snippets


// Subscribe: in routes/message-broker.php
Route::make()
    ->subscribe($exchangeName)
    ->listenTo($routingKey, function (MessageData $dataMessage) {
        dump($dataMessage->payload);
    });

//Publish: from any file
MessageBroker::sendTo($exchangeName, $payloadMessage, $routingKey);

use Kakaprodo\MessageBroker\Facades\MessageBroker;

$exchangeName = "order-lifecycle";
$payloadMessage = ['message' => "order created"];
$routingKey = "created";

MessageBroker::sendTo($exchangeName, $payloadMessage, $routingKey);

use Kakaprodo\MessageBroker\Facades\MessageBroker;

$exchangeName = "hello-world";
$payloadMessage = ['message' => "It's a new day"];

MessageBroker::broadcast($exchangeName, $payloadMessage);

use Kakaprodo\MessageBroker\Brokers\RabbitMq\Routing\Route;
use Kakaprodo\MessageBroker\Brokers\RabbitMq\Data\MessageData;

$exchangeName = "hello-world";

Route::make()->any()->subscribe($exchangeName, function (MessageData $dataMessage) {
    dump($dataMessage->payload, $dataMessage->getRawPayload());
});

use Kakaprodo\MessageBroker\Brokers\RabbitMq\Routing\Route;
use Kakaprodo\MessageBroker\Brokers\RabbitMq\Data\MessageData;

$exchangeName = 'order-lifecycle';
$routingKey = "created";

Route::make()
    ->subscribe($exchangeName)
    ->listenTo($routingKey, function (MessageData $dataMessage) {
        dump($dataMessage->payload);
    });

Route::make()
    ->subscribe('order-lifecycle')
    ->listenToMany([
        'created' => function (MessageData $dataMessage) {
            dump($dataMessage->payload);
        },
        'paid' => MyOrderPaidAction::class,
    ]);

use Kakaprodo\MessageBroker\Brokers\RabbitMq\Routing\Route;

Route::make()
    ->topic()
    ->subscribe($topicExchange)
    ->listenTo($topicRoutingKey, function (MessageData $dataMessage) {
        dump($dataMessage->payload);
    });

    $handler = function (MessageData $dataMessage) {
        dump($dataMessage->payload);
    };

    Route::make()
        ->subscribe($exchangeName)
        ->listenTo($routingKey, $handler);
    

    use Kakaprodo\MessageBroker\Brokers\RabbitMq\Data\MessageData;

    class MyOrderPaidAction
    {
        public function handle(MessageData $dataMessage)
        {
            dump($dataMessage->payload);
        }
    }

    Route::make()
        ->subscribe($exchangeName)
        ->listenTo($routingKey, MyOrderPaidAction::class);
    

    use Kakaprodo\CustomData\CustomData;
    use Kakaprodo\CustomData\Helpers\CustomActionBuilder;
    use Kakaprodo\MessageBroker\Brokers\RabbitMq\Data\MessageData;

    class MyOrderPaidData extends CustomData
    {
        protected function expectedProperties(): array
        {
            return [
                'data_message' => $this->property(MessageData::class),
                'order_number' => $this->property()->number(),
            ];
        }
    }

    class MyOrderPaidAction extends CustomActionBuilder
    {
        public function handle(MyOrderPaidData $data)
        {
            dump($data->all());
        }
    }

    Route::make()
        ->subscribe($exchangeName)
        ->listenTo($routingKey, MyOrderPaidAction::class);
    
json
{
    "php": ">=8.0",
    "laravel/framework": ">=8.0",
    "kakaprodo/custom-data": ">=2.3.3 || dev-develop",
    "php-amqplib/php-amqplib": "^3.7"
}
bash
php artisan message-broker:install
bash
php artisan message-broker:consume
bash
php artisan message-broker:consume --ack