zelenin/message-bus

轻量级消息总线

0.0.3 2017-07-07 16:53 UTC

This package is not auto-updated.

Last update: 2024-09-15 02:22:07 UTC


README

安装

Composer

安装此扩展的首选方式是通过 Composer

运行

php composer.phar require zelenin/message-bus "~0.0.1"

或添加

"zelenin/message-bus": "~0.0.1"

到你的 composer.json 的 require 部分

使用方法

示例

$handlers = [
    CreatePost::class => new CreatePostHandler($postRepository)
];

$middlewares = [
    new HandlerMiddleware(new MemoryLocator($handlers))
];

$commandBus = new MiddlewareBus(new MiddlewareStack($middlewares));

$message = new CreatePost('Post title', 'Post content');

$context = $commandBus->handle($message);

ProviderLocator

$provider = new AnnotationProvider(__DIR__ . '/src');
if ($isProduction) {
    $provider = new CacheProvider(__DIR__ . '/data/handlers-cache.php', $provider);
}
$locator = new ProviderLocator($provider, new ContainerHandlerResolver($container));

return new MiddlewareBus(new MiddlewareStack([
    new HandlerMiddleware($locator),
]));

ContainerHandlerResolver 可用于支持 PSR-11 Container

上下文

消息总线使用不可变的 Context 通过中间件传输数据,并将其返回给消费者。

作者

Aleksandr Zelenin,电子邮件: aleksandr@zelenin.me