首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PROOPH中由投影创建的读模型中等待新记录

在PROOPH中由投影创建的读模型中等待新记录
EN

Stack Overflow用户
提问于 2018-08-20 09:29:03
回答 2查看 713关注 0票数 2

我使用prooph(https://github.com/prooph),所以我有了我的写模型,在这里我存储了如下所示的事件(聚合表):

当我使用命令在后台运行投影时:

代码语言:javascript
复制
php bin/console event-store:projection:run card_projection

我读过的模型如下:

在我的后台应用程序前面,我有rest,在这里我创建事件:

代码语言:javascript
复制
CardWasAdded

通过网址:

代码语言:javascript
复制
POST /cards

我收到201码。

之后,我通过url刷新我的列表:

代码语言:javascript
复制
GET /cards

问题是,有时这个新事件不是由投影处理的。所以问题是:

如何处理这个问题?

  1. 我应该等两秒钟还是等一段时间?(对我来说,丑陋的黑客)。
  2. 我应该在插入后处理事件-而不是在背景中使用投影处理?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-20 12:01:49

我的回答不是prooph特定的,但以下是您可以在任何CQRS系统中使用的一些策略:

  1. 只要接受这样一个事实--阅读模型并不是完全一致的(什么都不做)。例子--当我在Twitter上发布一些东西时,我可能不会立即看到我的帖子在流中,这是可以的。它最终会出现在那里。
  2. 乐观的UI更新。只需更新UI,就好像您的命令经过了一样。如果不是-没什么大不了的。就像推特上的一些东西。你不需要等待确认。如果某种程度上类似于失败-它的状态将与下一次读取模型刷新。
  3. 在API端点等待。您的API被调用,您发出一个命令,并寻找发生特定的读取模型更新。超时失败。
  4. 在UI级别等待。您发送一个命令并显示一些“等待”UI元素,直到查询返回所要查找的内容或超时失败为止。

使用策略3和4,您可以使用某种服务器信令套接字或类似的东西。您的读取模型可能能够确认它已被更新。

票数 6
EN

Stack Overflow用户

发布于 2018-09-07 07:55:36

谢谢罗曼的回答。

最后,我接受了读模型有延迟的事实。

在rest中,当我发布新资源时,会返回201和json,并返回新创建的Id,等等。我的前端应用程序,基于来自POST新资源(POST /card)的响应,将新记录作为新行添加到数据表中,并带有“新”标记。

当用户刷新列表时,读取模型就准备好了(因为构建新记录需要不到1秒)。

最后,对于用户来说,记录是否来自

POST /cards

获取/cards

因此,用户体验是很好的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51927793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档