SimpleBus Symfony Bridge 使用教程
项目介绍
SimpleBus Symfony Bridge 是一个将 SimpleBus 消息总线库与 Symfony 框架集成的开源项目。SimpleBus 提供了一种轻量级的方式来处理应用程序中的命令和事件,而 Symfony Bridge 则使得在 Symfony 项目中使用 SimpleBus 变得更加方便。
项目快速启动
安装
首先,通过 Composer 安装 SimpleBus Symfony Bridge:
composer require simple-bus/symfony-bridge
配置
在 config/packages/simple_bus.yaml
文件中添加以下配置:
simple_bus:
command_bus:
middleware:
- simple_bus.command_bus.middleware.locking
- simple_bus.command_bus.middleware.dispatching
- simple_bus.command_bus.middleware.finishing
event_bus:
middleware:
- simple_bus.event_bus.middleware.publishing
使用
创建一个命令类:
namespace App\Command;
use SimpleBus\Message\Name\NamedMessage;
class CreateUserCommand implements NamedMessage
{
public function __construct(public string $username) {}
public static function messageName(): string
{
return 'create_user_command';
}
}
创建一个命令处理器:
namespace App\CommandHandler;
use App\Command\CreateUserCommand;
class CreateUserCommandHandler
{
public function handle(CreateUserCommand $command): void
{
// 处理创建用户的逻辑
}
}
在 Symfony 服务容器中注册命令处理器:
services:
App\CommandHandler\CreateUserCommandHandler:
tags:
- { name: 'command_handler', handles: 'App\Command\CreateUserCommand' }
最后,在控制器中使用命令总线:
namespace App\Controller;
use App\Command\CreateUserCommand;
use SimpleBus\SymfonyBridge\Bus\CommandBus;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
class UserController extends AbstractController
{
public function createUser(CommandBus $commandBus): Response
{
$command = new CreateUserCommand('new_user');
$commandBus->handle($command);
return new Response('User created');
}
}
应用案例和最佳实践
应用案例
SimpleBus Symfony Bridge 可以用于构建事件驱动的应用程序。例如,在一个电子商务网站中,可以使用 SimpleBus 来处理订单创建、支付处理和库存更新等事件。
最佳实践
- 单一职责原则:确保每个命令处理器只处理一个命令。
- 依赖注入:使用 Symfony 的依赖注入容器来管理命令处理器的依赖。
- 事件监听:使用事件总线来解耦应用程序的不同部分。
典型生态项目
SimpleBus Symfony Bridge 可以与其他 Symfony 生态项目结合使用,例如:
- Doctrine ORM:用于持久化命令和事件的数据。
- Monolog:用于记录命令和事件的处理日志。
- Symfony Messenger:用于异步处理命令和事件。
通过这些生态项目的结合,可以构建一个强大且灵活的事件驱动架构。