wallsfantasy / service-bus-laravel-package
一个用于在 Laravel 项目中利用 Prooph 服务总线的包
v1.0.1
2018-08-27 16:05 UTC
Requires
- php: ^7.1
- prooph/service-bus: ^6.1
- symfony/stopwatch: ^3.3
Requires (Dev)
- barryvdh/laravel-debugbar: ^3.1
- laravel/framework: ^5.5
- orchestra/testbench: ^3.5
- react/promise: ^2.5
This package is not auto-updated.
Last update: 2024-10-02 21:42:14 UTC
README
本包支持在 Laravel 应用中使用 prooph 服务总线。
特性
- 支持默认与类绑定的总线
- 支持无限命名的总线
- 为所有总线添加记录器
- 自动解析处理器
- 在调试模式下收集分析数据
- 异步切换
安装
composer require camuthig/service-bus-laravel-package
设置
发布配置
php artisan vendor:publish
包含提供者
当安装此包时,Laravel 会自动发现它,不需要包含服务提供者的任何更改。
用法
获取默认总线
可以通过两种方式检索每种总线类型的默认实例
<?php use \Camuthig\ServiceBus\Package\Test\Fixture\TestEvent; // Using the facade \Camuthig\ServiceBus\Package\Facade\EventBus::dispatch(new TestEvent()); // Getting the Prooph interface from the container app()->make(\Prooph\ServiceBus\EventBus::class)->dispatch(new TestEvent());
每种总线类型(命令、事件和查询)都包含一个单例接口以及一个外观。
ServiceBusManager
此包还支持每种总线类型可以有多个。要利用非默认总线,您需要使用 ServiceBusManager。管理器通过名称提供了对所有总线的访问。
服务管理器可以通过以下三种方式检索
<?php // As a facade \Camuthig\ServiceBus\Package\Facade\ServiceBus::eventBus('other_bus'); // Getting the interface from the container $manager = app()->make(\Camuthig\ServiceBus\Package\Contracts\ServiceBusManager::class); $manager->eventBus('other_bus'); // Getting the `service_bus` from the container $manager = app()->make('service_bus'); $manager->eventBus('other_bus');
配置
可以使用 service_bus.php 配置文件来配置总线。每种类型的总线将具有自己的命名总线列表,以下选项:
- message_factory 用于总线的服务 ID 或类名。如果没有提供此键,则默认为 prooph FQCNMessageFactory。
- action_event_emitter 用于总线的服务 ID 或类名。如果没有提供此键,则默认为 prooph ProophActionEventEmitter。
- plugins 要添加到总线的插件的服务 ID 或类名列表。
- router 总线路由插件配置。详情请见下文
路由配置
可以通过以下方式配置每个总线的路由:
- type 用于此总线的
MessageBusRouterPlugin类名。期望路由器的构造函数应接受一个路由映射数组。请参阅 prooph 的CommandRouter、EventRouter和QueryRouter类的示例。如果没有提供,则默认为根据总线类型适当的 prooph 路由器。 - async_switch 要添加到总线的
AsyncSwitchMessageRouter的服务 ID 或类名。如果没有提供此值,则不会在总线上包含任何切换。 - routes 路由映射列表
- 命令和查询路由:列表中的每个条目都是一个“消息名称”到“消息处理器”(命令处理器或查询查找器)的映射。
- 事件路由:列表中的每个条目都是一个“消息名称”到“监听器列表”的映射。