open-solid / bus
简单的总线组件
v1.1.3
2024-09-19 17:02 UTC
Requires
- php: >=8.2
- psr/container: ^2.0
- psr/log: ^3.0
- symfony/service-contracts: ^3.4
- yceruto/decorator: ^1.0
Requires (Dev)
- doctrine/orm: ^3.1
- friendsofphp/php-cs-fixer: ^3.54
- phpunit/phpunit: ^10.0
- psalm/plugin-phpunit: ^0.18
- symfony/dependency-injection: ^7.1
- vimeo/psalm: ^5.0
README
消息总线组件是现代应用程序中管理不同系统部分之间通信的必备组件。它充当一个中央枢纽,在服务之间路由消息,确保解耦和可扩展的架构。这允许各个组件之间交互,而无需了解彼此的详细信息,从而简化开发和维护。
安装
composer require open-solid/bus
使用方法
使用总线发送消息
将“总线”视为消息的邮件递送系统。它遵循一些规则(中间件)的特定路径,以发送和处理您的消息。
以下是如何设置它并发送消息的示例代码片段
use App\Message\MyMessage; use OpenSolid\Bus\Handler\MessageHandlersLocator; use OpenSolid\Bus\Middleware\HandlingMiddleware; use OpenSolid\Bus\NativeMessageBus; // This is your custom function that does something when a message arrives. $handler = function (MyMessage $message): mixed { // Do stuff with the message here... }; // Setting up the bus with a middleware that knows who handles the message. $bus = new NativeMessageBus([ new HandlingMiddleware(new MessageHandlersLocator([ MyMessage::class => [$handler], // Maps messages to handlers. ])), ]); // Send a message using the bus. $bus->dispatch(new MyMessage());
处理消息
“消息处理器”是在消息到达时执行工作的组件。它可以是一个简单的函数或类中的方法。以下是如何设置一个的示例
use App\Message\MyMessage; class MyMessageHandler { public function __invoke(MyMessage $message): mixed { // Process the message here... } }
中间件
中间件是在处理消息之前和之后执行任务的辅助工具。它们在总线级别运行,这意味着它们处理通过它们链接的消息总线发送的所有消息。
以下是如何创建一个中间件的示例
use OpenSolid\Bus\Envelope\Envelope; use OpenSolid\Bus\Middleware\Middleware; use OpenSolid\Bus\Middleware\NextMiddleware; class MyMiddleware implements Middleware { public function handle(Envelope $envelope, NextMiddleware $next): void { // Do something before the message handler works. $next->handle($envelope); // Call the next middleware // Do something after the message handler is done. } }
装饰器
装饰器是在处理消息之前和之后执行任务的辅助工具。与中间件不同,装饰器在处理器级别运行,允许您在不更改实际代码的情况下修改或增强特定处理器。
请参阅decorator和decorator-bundle包中的示例。
框架集成
- cqs-bundle - 用于命令-查询总线的Symfony包。
- domain-event-bundle - 用于事件总线的Symfony包。
许可证
此工具可在MIT许可证下使用,这意味着您可以在项目中自由使用它。