我使用prooph(https://github.com/prooph)所以我有我的写模型,我存储下面的事件(聚合表):
当我使用命令在后台运行投影时:
php bin/console event-store:projection:run card_projection
我读过如下模型:
在我的后台应用程序前面我有API,我创建事件:
CardWasAdded
通过网址:
POST /cards
我收到代码201。
之后我通过url刷新我的列表:
GET /cards
问题是有时这个新事件不会被投影处理。所以问题是:
如何管理这个问题?
我的答案不是特定于专业的,但是您可以在任何CQRS系统中使用以下策略:
使用策略3和4,您可以使用某种服务器信令 - 套接字或类似的东西。您的阅读模型可能能够确认它已更新。
谢谢罗曼的答案。
最后我接受了读模型有延迟的事实。
在我的休息api中,当我发布新资源时,我返回201和json以及新创建的Id,依此类推。我的前端应用程序,基于POST新资源(POST /卡)的响应,将新记录添加到数据表中作为新行,带有“NEW”徽章。
当用户刷新列表时,读取模型就绪(因为构建新记录的时间不到1秒)。
最后,用户是否记录来自没有区别
POST /卡片
要么
GET /卡
所以用户体验很好。