wallsfantasy/service-bus-laravel-package

一个用于在 Laravel 项目中利用 Prooph 服务总线的包

v1.0.1 2018-08-27 16:05 UTC

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 的 CommandRouterEventRouterQueryRouter 类的示例。如果没有提供,则默认为根据总线类型适当的 prooph 路由器。
  • async_switch 要添加到总线的 AsyncSwitchMessageRouter 的服务 ID 或类名。如果没有提供此值,则不会在总线上包含任何切换。
  • routes 路由映射列表
    • 命令和查询路由:列表中的每个条目都是一个“消息名称”到“消息处理器”(命令处理器或查询查找器)的映射。
    • 事件路由:列表中的每个条目都是一个“消息名称”到“监听器列表”的映射。