proophsoftware / mongo-read-event-store
只读MongoDB事件存储实现
dev-master
2018-03-08 09:00 UTC
Requires
- php: ^7.1
- mongodb/mongodb: ^1.0
- prooph/event-store: ^7.0
- psr/container: ^1.0
- sandrokeil/interop-config: ^2.0.1
Requires (Dev)
- malukenho/docheader: ^0.1.4
- phpspec/prophecy: ^1.7
- phpunit/phpunit: ^6.0
- prooph/bookdown-template: ^0.2.3
- prooph/php-cs-fixer-config: ^0.1.1
- satooshi/php-coveralls: ^1.0
This package is auto-updated.
Last update: 2024-09-17 02:17:25 UTC
README
安装
composer require proophsoftware/mongo-read-event-store
目的
该包提供了一个只读的mongodb事件存储,它连接到prooph/event-store v6 mongodb。获取的事件会在运行时提升为适用于prooph/common v4及以上版本定义的消息格式。只读的mongodb事件存储可以用于使用流到流的投影将v6 mongodb事件流迁移到prooph/event-store v7事件流。
此外,您可以在event-store-http-api项目中使用只读的mongodb事件存储来通过HTTP读取您的v6事件流。
限制
在prooph/event-store v7中引入了一个新的事件流位置,这是一个序列。这个新位置在EventStore::load
和EventStore::loadReverse
方法中得到处理,但v6流没有这样的位置。因此,我们将回退到按created_at
排序,并使用$fromNumber - 1
作为跳过选项。这模拟了迭代事件流,但由于相同的戳记,可能返回不同的事件顺序。
事件存储HTTP API
要使用event-store-http-api与只读mongodb事件存储,您需要使用本包提供的DecoratedReadOnlyEventStore
包装它,因为http api包需要一个完整的事件存储实现。这意味着您不能使用http api的写操作。
索引
为了有效地按created_at
排序事件,您应该在您的流集合中添加索引
$collection->createIndex([ 'created_at' => 1 ], ['name' => 'prooph_rom_sort']);