当前位置: 首页 > 知识库问答 >
问题:

轴突指令的分离及其作用

朱高超
2023-03-14

我在维护一个事件源的应用程序,恐怕它已经走得很远了。

  1. 将命令(cmd1)发送到另一个聚合根,该聚合根将发布一个事件,该事件将创建许多传奇,每次触发一些最终由许多聚合处理的命令
  2. 发送第二个命令(cmd2),该命令也将导致各种命令/事件/命令序列。

以示意图的形式:

cmd0 -> AR0 -> evt0 -> evtHandler -> cmd1 -> AR1 -> evt1 -> saga stuff and more cmds and evts
                                 |-> cmd2 -> AR2 -> evt2 -> more saga stuff, cmds and evts

所有事情都发生在同一个线程中,所有事情都发生在第一个命令处理开始的1个事务中。

共有1个答案

黄骏喆
2023-03-14

老实说,Jan,最好是应用程序中的组件不太依赖于该顺序。它本质上意味着您有不同的消息处理组件,这些组件本质上可以是不同的微服务,但它们都绑在一起,因为顺序很重要。

理想情况下,您应该将组件设置为独立工作。因此,聚合处理命令并发布结果,完成。传奇对事件做出反应,不管它们来自哪里,并通过行动对其做出反应(例如命令调度)。

在这里,接受可能性会有所帮助,因为它将放弃等待一个过程完成的全部要求。

关键是所有的影响是什么。从分派该命令开始,您应该只关心该命令是否成功地处理yes或no,这才是问题的终点。

我知道这不会给你一个简单的编程解决方案,因为你需要调整设计。但我认为脱钩是唯一正确的方式去听。

这是我对这种情况的两分钱,希望这有助于你在任何方面更进一步。

  • 命令-命令始终被路由到单个实例上的单个句柄。此外,您还可以预期OK或NOK形式的响应。OK的意思是处理程序是void或创建的实体的标识符(就像聚合本身一样)。NOK通常是从命令处理方法中抛出的异常,它表示出了问题,或者命令无法执行,应该通知调度端。
  • events-事件将广播给任何订阅eventbus并能够处理给定事件的组件。请注意,事件处理在时间上与事件的实际发布点分开。这意味着无法将事件处理的结果返回给事件的调度程序。
  • 查询-查询消息可以以多种形式路由。单个组件最适合回答查询(称为点对点查询)。您还可以将查询分派给多个处理程序并聚合结果(称为分散-聚集查询)。最后,您可以通过执行“订阅查询”来订阅查询模型,该查询本质上是由更新流跟踪的点对点更新的组合。显然,查询分派意味着您正在接收来自某个组件的结果。只是在查询类型上有自由。如果需要任何关于查询响应的“最新”的保证,那么应该将其作为所发送查询的实现以及@queryhandler注释方法如何处理查询响应的一部分。

希望这为Axon应用程序中的每个消息提供了一些额外的清晰度!

 类似资料:
  • 问题内容: 给定带有transclude和隔离范围的指令(),当链接该指令时,我具有以下范围: 我期望: 如果同一指令具有 共享作用域 而不是 隔离作用域 ,则可以得到预期的结果。 这给我带来了一个问题,因为,如果被包含的内容包含另一个具有隔离范围的指令(),则会得到: 我想使用这样的指令: 但是,这并不工作,里面,是因为不上合适的范围。 我有两个问题: 如果指令具有隔离的作用域,为什么作用域不是

  • 更改历史 * 2021-05-17 田涛 初始化文档 一、linux 简介(了解) linux 是一种免费使用和自由传播的类 UNIX 操作系统,是一个基于 POSIX(可移植操作系统接口)的多用户、多任务、支持多线程和多 CPU 的操作系统。 在我们的开发工作中,会经常与服务器打交道,所以学习 linux 的基本操作是很有必要的。全球大约有数百款的 Linux 系统版本,每个系统

  • 本文向大家介绍angular分页指令操作,包括了angular分页指令操作的使用技巧和注意事项,需要的朋友参考一下 目前的多个项目中都用到分页这个功能,为了提高可复用性,我特地分离出来写了个分页的指令。直接贴代码,详情如下: index.html index.js  指令模板  page.html 指令定义page.js  效果如图所示: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大

  • 因此,我希望可以使用优先级来确保我的指令首先运行,并最终创建一个隔离范围,当运行时,它重用隔离范围,而不是创建一个原型上从父范围继承的范围。文档声明该指令在优先级下运行。尚不清楚是高优先级还是低优先级。当我在指令中使用优先级时,没有什么不同,所以我尝试了。但这使情况变得更糟:我的双向绑定变成,并且我的指令不显示任何内容。 我创造了一个小提琴来显示我的问题。我已经注释掉了指令中的设置。我有一个nam

  • 本文向大家介绍AngularJS ng-repeat指令及Ajax的应用实例分析,包括了AngularJS ng-repeat指令及Ajax的应用实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了AngularJS ng-repeat指令及Ajax的应用。分享给大家供大家参考,具体如下: ng-repeat 指令用于循环输出指定次数的 HTML 元素。集合必须是数组或对象。 定义:

  • 我正在制作一个小型2D引擎,并决定使用分离轴定理进行实践。我对玩家对象进行了碰撞检测和平移,但当游戏与多个对象发生碰撞时,会停止玩家的移动。下面是我的问题的一个例子: 玩家沿着墙移动,同时向下和向右推动自己。一旦玩家到达两个瓷砖之间的交叉点,他就不能再向下移动,因为他下面的瓷砖检测到碰撞,会在他右边的瓷砖直接将他推到左边之前将玩家推起来。我相信问题是玩家下面的瓷砖在另一个瓷砖之前正在测试碰撞,但我