小编Leo*_*ira的帖子

CQRS/ES 架构上的补偿事件

所以,我正在做一个 CQRS/ES 项目,在这个项目中,我们对如何处理在其他架构中很容易处理的琐碎问题有一些疑问

我的情况如下:

我有一个客户 CRUD REST API,每个客户都有唯一的文档(编号),所以当我注册一个新客户时,我必须验证是否有另一个客户拥有该文档以避免重复,但是当涉及到 CQRS/在 ES 架构中,我们具有最终一致性,我发现这种验证很难解决。

需要注意的是,我的问题不是跨微服务,而是在同一个微服务的命令应用和查询应用之间。

我们也在使用eventstore

我目前的解决方案:

所以我今天要做的是,在我的命令应用程序中,在保存 CustomerCreated 事件之前,我询问查询应用程序(使用 PostgreSQL)是否有客户拥有该文档,如果没有,我允许该事件继续进行。但这并不能保证 100%,对吧?因为我的查询可以不同步,所以我不能 100% 信任它。那是我的第二次验证开始时,当我的查询应用程序正在处理事件并将它们保存到我的 PostgreSQL 时,我再次检查是否有客户拥有该文档,如果有,我拒绝该事件并发出补偿事件以撤消/cancel/inactivate 使用重复文档的客户,从而在 eventstore 上完成该客户流。

尽管这有效,但这里有两件事困扰我,第一件事是我的命令应用程序依赖于查询应用程序,因此如果我的查询应用程序关闭,我的命令会受到影响(今天,如果查询是下来但仍然......)第二件事是,查询/读取模型真的能够发出事件吗?如果是这样,正确的做法是什么?该命令是否应该为此提供某种 API?或者查询是否应该使用一些公共共享库将事件直接发送到事件存储?如果我有不止一个视图/阅读?我应该选择哪一个来处理这个问题?

真的希望有人能对这些问题有所了解,并帮助我解决这些问题。

events cqrs event-sourcing eventstoredb

6
推荐指数
1
解决办法
1181
查看次数

NS 中的六边形图像视图

我怎样才能创建一个像 NS 这样的组件?

如何给 ImageView 赋予六边形形状

我想创建一个具有六边形外观的图像组件,但我无法弄清楚如何正确扩展 nativescript 类以获得此结果。

android image nativescript

0
推荐指数
1
解决办法
123
查看次数