nepada/message-bus-doctrine

nepada/message-bus 的 Doctrine ORM 集成

v2.3.0 2024-04-06 16:47 UTC

This package is auto-updated.

Last update: 2024-09-01 14:27:40 UTC


README

Build Status Coverage Status Downloads this Month Latest stable

安装

通过 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