ruby-on-rails - RailsEventStore 中的持久关系投影
问题描述
我正在尝试使用 RailsEventStore 构建 CQRS 和事件源 Rails 5.2.x 应用程序。
现在我想将我的事件流投影到一个关系模型中,理想情况下只使用 ActiveRecord 和我也用于我的事件存储的 PostgreSQL 数据库。
在 RailsEventStore 的文档中,我只发现了动态的、非持久的投影。
是否有任何基础设施可用于持续构建和更新事件流的关系表示?它需要记住在应用程序重新启动时哪些事件已经应用于关系模型。
如果你知道怎么做,请告诉我。
解决方案
RailsEventStore 中没有开箱即用的后台进程来支持持久投影,就像 EventStore 数据库一样。
但是,您可以将一些部分组合在一起以实现类似的东西——事件处理程序和链接。
我的同事 Rafał 整理了几篇文章来记录这种方法:
- https://blog.arkency.com/using-streams-to-build-read-models/
- https://blog.arkency.com/read-model-patterns-in-case-of-lack-of-order-guarantee/
如果您想将此类投影实现为单独的后台进程,而不是依赖事件处理程序(无论是否同步),那么带有PgLinearizedRepository的分布式RailsEventStore可能是一个很好的起点。
推荐阅读
- android - android:添加一个新节点
- python - 如何在 python tkinter gui 中为一个块添加一个区域
- docker - 如何让在 docker 和 gunicorn 上作为网络服务器运行的加密烧瓶应用程序..?
- json - Json中未定义的值数组
- python - 使用嵌套的 for 循环和范围在 Python 3 中打印所需的显示
- php - 添加时区时php日历显示错误的日期
- tensorflow - 在 tensorflow 分布式模式下,一个 ps 中运行了一些奇怪的东西 - 一个工作人员
- windows - 在命令行中在 Windows 上使用 gunzip
- c# - Admob 广告仅显示在 MainPage (Xamarin Android)
- react-native - 为什么当我在我的设备中运行 Expo react native 独立 apk 时图像不显示?