多个公共汽车

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.1,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

多个公共汽车

常见的体系结构在构建应用程序是独立的命令从查询。命令的行动做一些和查询获取数据。这叫做CQRS(命令查询责任隔离)。看到马丁篇关于CQRS要学习更多的知识。这种架构可以用信使一起组件通过定义多个公共汽车。

一个命令总线从一个有点不同查询公共汽车。例如,命令公交车通常不提供任何结果和查询公交车很少是异步的。您可以配置这些公共汽车和他们的规则,利用中间件。

它还可能是一个好主意从反应通过引入一个单独行动事件总线。事件总线可以有零个或多个订阅者。

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
框架:信使:#公共汽车就是注射时注射MessageBusInterfacedefault_bus:command.bus公共汽车:command.bus:中间件:- - - - - -验证- - - - - -doctrine_transactionquery.bus:中间件:- - - - - -验证event.bus:default_middleware:allow_no_handlers中间件:- - - - - -验证

这将创建三个新的服务:

  • command.bus:autowireableMessageBusInterfacetype-hint(因为这是default_bus);
  • query.bus:autowireableMessageBusInterface queryBus美元;
  • event.bus:autowireableMessageBusInterface eventBus美元

限制每辆车处理程序

默认情况下,每个处理程序将被用于处理消息所有你的巴士。防止调度消息错了公共汽车没有一个错误,您可以限制每个处理程序到一个特定的总线使用messenger.message_handler标签:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7
#配置/ services.yaml服务:应用MessageHandler \ \ SomeCommandHandler:标签:[{名称:messenger.message_handler,总线:command.bus})#防止注册处理程序(或者你可以删除的两倍# MessageHandlerInterface autoconfigure用来发现处理程序)可以使用autoconfigure:

这种方式,应用MessageHandler \ \ SomeCommandHandler处理程序才会知道的command.bus公共汽车。

你也可以自动添加这个标签使用的类_instanceof服务配置。使用这个,您可以确定消息总线基于一个实现接口:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#配置/ services.yaml服务:#……_instanceof:实现CommandHandlerInterface #所有服务#将注册在命令。公交巴士应用MessageHandler \ \ CommandHandlerInterface:标签:- - - - - -{名称:messenger.message_handler,总线:command.bus}#而实现QueryHandlerInterface#注册查询。公交巴士应用MessageHandler \ \ QueryHandlerInterface:标签:- - - - - -{名称:messenger.message_handler,总线:query.bus}

调试汽车

调试:信使每辆车&命令列出可用的消息处理程序。你也可以限制到一个特定的列表总线通过提供其名称作为参数。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27日28
美元php bin /控制台调试:信使信使= = = = = = = = =命令。公共汽车- - - - - -- - - - - -- - - - - -- - - - - -- - - - - -- - - - - -- - - - - -- - - - - -- - - - - --- The following messages can be dispatched: --------------------------------------------------------------------------------------- App\Message\DummyCommand handled by App\MessageHandler\DummyCommandHandler App\Message\MultipleBusesMessage handled by App\MessageHandler\MultipleBusesMessageHandler --------------------------------------------------------------------------------------- query.bus --------- The following messages can be dispatched: --------------------------------------------------------------------------------------- App\Message\DummyQuery handled by App\MessageHandler\DummyQueryHandler App\Message\MultipleBusesMessage handled by App\MessageHandler\MultipleBusesMessageHandler ---------------------------------------------------------------------------------------< /code>

提示

因为Symfob娱乐下载ony 5.1,命令还将展示的PHPDoc描述消息并处理程序类。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。