我们尝试了几件事:
>
发出命令:
请求邀请确认
invitationconfirmationrequested
事件,则返回错误。缺点:-据我所知,应该用佐贺来编排流程。这里我们介绍“验证”的概念。我不确定这是不是推荐的方法。
验证是一个非常常见的概念。在分布式完全异步系统中如何处理它?
本系统设计的要点是:“谁是这个API的客户端?”。
服务
或应用程序
,这是一回事(如分布式应用程序、微服务等)。简短回答
如果你在周围搜索,你会看到很多关于错误和验证的讨论,所以下面是我对此的看法。
因为我们要分离我们系统的其他部分,所以分离我们所拥有的错误类型似乎是很自然的。你可以查看这篇关于那个主题的论文。
让我们定义一些错误类型。
ID
的邀请
是否存在邀请
尚未过期邀请
是否尚未处理(接受、拒绝等)如何处理这将取决于我们如何分离应用程序中的责任。让我们使用DesignByContract原则,定义每一层(域、应用程序等)对其他层的期望。
让我们定义一个规则,不应创建和调度包含invitationid
的命令,该命令与现有的invitationid
不对应。
在使用API的情况下,接受请求的RouteHandler
(应用程序控制器等)必须:
让我们进一步定义这是applicationlayer
的一部分(或者模块、组件等,不管它是如何调用的,所以我将使用Layer),并使其成为applicationerror
。从这里我们可以用许多不同的方法来做。
从现在开始,我们系统中的其他人应该考虑在ConfironminVitationCommand
中使用指定的ID
的邀请是存在的。如果没有,则将其视为系统中的故障,并应由开发人员和/或管理员进行检查。应该有一个手动方式(一个管理后端)来取消这些无效的命令,所以在开发系统时必须考虑到这一点,不像系统中的故障一样处理。
另外两个验证是域
的一部分。
假设你有一个
>
confirminvitationCommand
启动invitationconfirmationsaga
invitationconfirmationsaga
将requestconfirmationvitation
消息发送到invition
后来呢:
如果邀请
未过期,则接受邀请,并将invitationaccepted
消息发送到invitationconfirmationsaga
然后:
invitationconfirmationsaga
将接收这些消息并相应地引发事件。概述 Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。 理论基础:Hector & Kenneth 发表论⽂ Sagas (1987) 适用场景: 业务流程长、业务流程多 参与者包含其它公司或遗留系统服务,无法提供 TCC 模式要求的三个接口 优势:
我有一个用例,我将把一个json-schema作为输入,验证它,然后保存在我的系统中。稍后,我将获取json数据,我需要使用上面提到的json-schema来验证这些数据。给定这个场景,我需要执行两个级别的验证: 我使用的是json-schema-validator jar,只能找到第二级验证,在文档中找不到json-schema验证。例如:假设我们有以下示例json-schema:
在一个集合中对业务规则的验证是通过一致性问题的AR进行的。如何验证需要订单集合之外的数据的业务规则? 我也在使用CQRS方法,我认为使用ReadModel来获取验证业务规则所需的数据并不是一个糟糕的选择...您认为呢?
我正在使用Spring数据卡桑德拉连接到我的卡桑德拉数据库。我已经创建了实体java对象(带有@Table注释),以便从数据库中进行一些简单的提取。 我想知道如何在启动时进行模式验证,比如像在Hibernate中那样。 请注意,我阅读了有关查询验证的信息,但我对验证表名和列名感兴趣。
根据Avro模式规范(适用于接头):https://avro.apache.org/docs/current/spec.html 如上所述,Unions使用JSON数组表示。例如,["null","string"]声明一个模式,该模式可以是null或string。 ( 请注意,当为类型为联合的记录字段指定默认值时,默认值的类型必须与联合的第一个元素匹配。 因此,对于包含“null”的联合,通常首先