nepada / message-bus-doctrine
nepada/message-bus 的 Doctrine ORM 集成
v2.3.0
2024-04-06 16:47 UTC
Requires
- php: >=8.1.0 <8.4
- doctrine/orm: ^2.13@dev || ^3.0@dev
- doctrine/persistence: ^2.5 || ^3.0
- nepada/message-bus: ^2.0@dev || ^3.0@dev
Requires (Dev)
- doctrine/dbal: >=2.13.3
- nepada/coding-standard: 7.14.0
- nepada/phpstan-nette-tester: 1.1.0
- nette/tester: 2.5.2
- php-parallel-lint/php-parallel-lint: 1.4.0
- phpstan/phpstan: 1.10.66
- phpstan/phpstan-strict-rules: 1.5.2
- shipmonk/phpstan-rules: 2.11.3
- spaze/phpstan-disallowed-calls: 3.1.2
- symfony/cache: >=6.0
This package is auto-updated.
Last update: 2024-09-01 14:27:40 UTC
README
安装
通过 Composer
$ composer require nepada/message-bus-doctrine
使用
在实体中记录领域事件
使实体实现 Nepada\MessageBusDoctrine\Events\ContainsRecordedEvents
接口(例如,通过使用 Nepada\MessageBusDoctrine\Events\PrivateEventRecorder
trait),然后在实体中记录领域事件。事件将在 flush 时自动收集和分发。
事务处理
TransactionMiddleware
将命令处理包装在数据库事务中。所有由底层做出的更改将自动刷新和提交,或者在出错时回滚。
强烈建议使用 PreventOuterTransactionMiddleware
来确保消息总线堆栈外部没有启动外部数据库事务。不这样做可能会导致意外行为,例如在命令处理程序中的更改实际持久化之前就分发和处理事件。
清除实体管理器
使用 ClearEntityManagerMiddleware
在处理消息之前和/或之后清除实体管理器。注意:当处于活动事务中时,实体管理器不会被清除,即中间件顺序很重要。
致谢
事件记录的想法及其部分实现基于 Matthias Noback、Cliff Odijk 和 Ruud Kamphuis 的 simple-bus/doctrine-orm-bridge。