event-engine / prooph-v7-event-store
事件引擎 Prooph V7 事件存储集成
v0.10.2
2023-08-30 13:41 UTC
Requires
- php: ^7.2 || ^8.0
- event-engine/php-engine-utils: ^0.2.1 || ^1.0
- event-engine/php-messaging: ^0.2.1
- event-engine/php-persistence: ^0.9.1
- prooph/event-store: ^7.0
Requires (Dev)
- malukenho/docheader: ^0.1.4
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^8.0 || ^9.0
- prooph/php-cs-fixer-config: ^0.4
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-08-30 01:28:52 UTC
README
事件引擎 Prooph V7 事件存储绑定
安装
composer require event-engine/prooph-v7-event-store
Prooph 绑定
待定
内存事件存储
待定
文件系统事件存储
包含一个兼容 prooph v7 的 FilesystemEventStore
。它仅用于演示目的(例如在研讨会中)。
//Basic set up that's able to handle Prooph\Common\Messaging\DomainEvent $filesystemEventStore = new \EventEngine\Prooph\V7\EventStore\FilesystemEventStore( 'data/prooph.event_store.json', \JSON_PRETTY_PRINT // optional MessageFactory -> defaults to FQCNMessageFactory // optional MessageConverter -> defaults to NoOpMessageConverter ); //Create an empty stream $filesystemEventStore->create( new \Prooph\EventStore\Stream( new \Prooph\EventStore\StreamName('event_stream'), new ArrayIterator() ) ); //Can also be used together with an InMemoryProjectionManager $projectionManager = new \EventEngine\Prooph\V7\EventStore\Projecting\InMemory\InMemoryProjectionManager( $filesystemEventStore, new \EventEngine\Persistence\InMemoryConnection() ); $query = $projectionManager->createQuery(); $query->fromStream('event_stream') ->whenAny(function (array $state, \Prooph\Common\Messaging\DomainEvent $event) { echo "{$event->messageName()} stored in event_stream\n"; }); $query->run();
请注意:FilesystemEventStore 和 InMemoryProjectionManager 的组合有一个缺点,即投影只能看到在运行投影时位于事件存储中的事件。如果其他 PHP 进程向存储添加事件,则这些事件在重启 PHP 进程并再次运行投影后才会对投影可见。如果需要,我们可能会在未来添加一个 FilesystemProjectionManager。