rekalogika/domain-event-outbox
最新稳定版本:2.5.2
Composer 安装命令:
composer require rekalogika/domain-event-outbox
包简介
Implementation of the transactional outbox pattern on top of rekalogika/domain-event
关键字:
README 文档
README
Implementation of the transactional outbox pattern on top of the
rekalogika/domain-event package.
Full documentation is available at rekalogika.dev/domain-event.
Synopsis
// // The event // final readonly class PostChanged { public function __construct(public string $postId) {} } // // The entity // use Rekalogika\Contracts\DomainEvent\DomainEventEmitterInterface; use Rekalogika\Contracts\DomainEvent\DomainEventEmitterTrait; class Post implements DomainEventEmitterInterface { use DomainEventEmitterTrait; // ... public function setTitle(string $title): void { $this->title = $title; // highlight-next-line $this->recordEvent(new PostChanged($this->id)); } // ... } // // The listener // use Psr\Log\LoggerInterface; use Rekalogika\Contracts\DomainEvent\Attribute\AsPublishedDomainEventListener; class PostEventListener { public function __construct(private LoggerInterface $logger) {} // highlight-next-line #[AsPublishedDomainEventListener] public function onPostChanged(PostChanged $event) { $postId = $event->postId; $this->logger->info("Post $postId has been changed."); } } // // The caller // use Doctrine\ORM\EntityManagerInterface; /** @var Post $post */ /** @var EntityManagerInterface $entityManager */ $post->setTitle('New title'); $entityManager->flush(); // During the flush above, the event will be recorded in the outbox table in the // database. Then the message relay service is executed, and will publish the // events on the event bus. When the event bus announces the event, the listener // will be executed.
Documentation
License
MIT
Contributing
The rekalogika/domain-event-outbox repository is a read-only repo split from
the main repo. Issues and pull requests should be submitted to the
rekalogika/domain-event-src
monorepo.
统计信息
- 总下载量: 2.42k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-03-10