vklymniuk/common-bus

Command bus.

This package's canonical repository appears to be gone and the package has been frozen as a result.

Installs: 501

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:php-library

v0.0.1 2021-05-24 18:07 UTC

This package is auto-updated.

Last update: 2021-11-28 14:02:13 UTC


README

Communication system that transfers message data between custom middleware.

Install

$ composer require symfony-ext/common-bus

Register the bundle:

// config/bundles.php

return [
    ...
    VKCommonBusBundle\VKCommonBusBundle::class => ['all' => true],
];

Create your bus

<?php

namespace App\CommandBus;

use VKCommonBusBundle\AbstractCommonBus;

/**
 * Class MetadataCollectorCommonBus
 */
class MetadataCollectorCommonBus extends AbstractCommonBus
{
    /**
     * @return string Supported Message class name
     */
    public function supports(): string
    {
        return \App\Document\Metadata::class;
    }
}

Create bus middleware

<?php

use VKCommonBusBundle\Envelope;
use VKCommonBusBundle\Middleware\MiddlewareInterface;
use VKCommonBusBundle\Stack\StackInterface;

/**
 * Class SearchMetadataMiddleware
 */
class SearchMetadataMiddleware implements MiddlewareInterface
{
    /**
     * @inheritdoc
     */
    public function handle(Envelope $envelope, StackInterface $stack): Envelope
    {
        /** @var \App\Document\Metadata $message */
        $message = $envelope->getMessage();
        // Your code

        return $stack->next()->handle($envelope, $stack);
    }
}

Register bus middleware handles

    App\CommonBus\MetadataCollectorCommandBus:
        arguments:
            $middlewareHandlers:
                - '@App\CommonBus\Middleware\SearchMetadataMiddleware'
                - '@App\CommonBus\Middleware\SearchMetadataMiddleware_1'
                - '@App\CommonBus\Middleware\SearchMetadataMiddleware_2'
                - '@App\CommonBus\Middleware\SearchMetadataMiddleware_3'
                - '@App\CommonBus\Middleware\SearchMetadataMiddleware_4'

Enjoy!