范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

AxonFrameworkCommand调度程序

  命令处理程序篇提供了有关如何在应用程序中处理命令消息的背景信息。 调度过程是这种命令消息的起点。 Axon 提供了两个接口,可用于将命令发送到命令处理程序,它们是: 命令总线和 命令网关
  本篇将显示如何以及何时使用命令网关和总线。 基础设施篇讨论了如何配置命令网关和总线实现的细节。 命令总线
  "Command Bus" 是将命令分派给它们各自的命令处理程序的机制。 因此,基础设施组件知道哪个组件可以处理哪个命令。
  每个命令总是被发送到一个命令处理程序。 如果分派的命令没有可用的命令处理程序,则会引发  NoHandlerForCommandException   异常。
  CommandBus   提供了两种方法将命令分派到它们各自的处理程序,分别是 dispatch(CommandMessage)   和 dispatch(CommandMessage, CommandCallback)   方法:private CommandBus commandBus; // 1.  public void dispatchCommands() {     String cardId = UUID.randomUUID().toString(); // 2.      // 3. & 4.     commandBus.dispatch(GenericCommandMessage.asCommandMessage(new IssueCardCommand(cardId, 100, "shopId")));      // 5. & 6.     commandBus.dispatch(             GenericCommandMessage.asCommandMessage(new IssueCardCommand(cardId, 100, "shopId")),             (CommandCallback) (cmdMsg, cmdResultMsg) -> {                 // 7.                 if (cmdResultMsg.isExceptional()) {                     Throwable throwable = cmdResultMsg.exceptionResult();                 } else {                     String commandResult = cmdResultMsg.getPayload();                 }             }     ); } // omitted class, constructor and result usage
  上面描述的 CommandDispatcher   举例说明了调度命令的几个重要方面和功能:CommandBus   接口提供发送命令消息的功能。根据最佳实践,聚合标识符被初始化为随机唯一标识符的字符串。
  类型化的标识符对象也是可以的,只要该对象实现了一个合理的 toString()   函数。GenericCommandMessage#asCommandMessage(Object)   方法用于创建 CommandMessage  。
  为了能够在 CommandBus   上发送命令,您需要将自己的命令对象(例如 "command message payload")包装在 CommandMessage   中。
  CommandMessage   还允许将 MetaData   添加到命令消息中。CommandBus#dispatch(CommandMessage)   函数将在总线上分派提供的 CommandMessage  ,以传递给命令处理程序。
  如果应用程序对命令的结果不直接感兴趣,则可以使用此方法。如果命令处理的结果与您的应用程序相关,则可以提供可选的第二个参数 CommandCallback  。
  CommandCallback   允许在命令处理完成时通知调度组件。命令回调有一个函数,onResult(CommandMessage, CommandResultMessage)  ,它在命令处理完成时被调用。
  第一个参数是调度命令,第二个参数是调度命令的执行结果。
  最后,CommandCallback   是一个 "functional interface",因为 onResult   是它的唯一方法。
  因此,commandBus.dispatch(commandMessage, (cmdMsg, commandResultMessage)   { /* … */ })   也是可以的。CommandResultMessage   提供 API 来验证命令执行是否异常或成功。
  如果 CommandResultMessage#isExceptional   返回 true,您可以假设 CommandResultMessage#exceptionResult   将返回包含实际异常的 Throwable   实例。
  否则,CommandResultMessage#getPayload   方法可能会为您提供实际结果或 null  ,如此处进一步指定。
  命令回调注意事项
  在使用 dispatch(CommandMessage, CommandCallback)   的情况下,调用组件可能不会假定回调是在分派命令的同一线程中调用的。 如果调用线程在继续之前依赖于结果,则可以使用 FutureCallback  。 FutureCallback   是 Future  (定义在 java.concurrent 包中)和 Axon 的 CommandCallback   的组合。 或者,考虑使用 CommandGateway  。命令网关
  "Command Gateway" 是一种用于调度命令的便捷方法。 它通过在  CommandBus   上调度命令时为您抽象某些方面来做到这一点。 它使用下面的 CommandBus   来执行消息的实际调度。
  虽然您不需要使用网关来分派命令,但它通常是最简单的选择。
  CommandGateway   接口可以分为两组方法,即 send   和 sendAndWait  :private CommandGateway commandGateway; // 1.  public void sendCommand() {     String cardId = UUID.randomUUID().toString(); // 2.      // 3.     CompletableFuture futureResult = commandGateway.send(new IssueCardCommand(cardId, 100, "shopId")); } // omitted class, constructor and result usage
  如上所示的 send   API 引入了几个概念,并标有编号的注释:CommandGateway   接口提供发送命令消息的功能。
  它通过在内部利用 CommandBus   接口调度消息来实现。根据最佳实践,聚合标识符被初始化为随机唯一标识符的字符串。
  类型化的标识符对象也是可以的,只要该对象实现了一个合理的 toString()   函数。send(Object)   函数需要一个参数,即命令对象。
  这是一种调度命令的异步方法。
  因此 send   方法的响应是 CompletableFuture  。
  这允许在返回命令结果后链接后续操作。
  使用 send(Object) 时的回调
  CommandGateway#send(Object)   方法在后台使用 FutureCallback   来解除命令调度线程与命令处理线程的阻塞。
  通过使用 sendAndWait   方法,也可以实现发送消息的同步方法:private CommandGateway commandGateway;  public void sendCommandAndWaitOnResult() {     IssueCardCommand commandPayload = new IssueCardCommand(UUID.randomUUID().toString(), 100, "shopId");     // 1.     String result = commandGateway.sendAndWait(commandPayload);      // 2.     result = commandGateway.sendAndWait(commandPayload, 1000, TimeUnit.MILLISECONDS); } // omitted class, constructor and result usageCommandGateway#sendAndWait(Object)   函数接受一个参数,即您的命令对象。
  它将无限期地等待,直到命令调度和处理过程已经解决。
  该方法返回的结果可以是成功的,也可以是异常的,这里会解释。如果不希望无限期地等待,可以在命令对象旁边提供与 "time unit" 配对的 "timeout"。
  这样做将确保命令调度线程不会等待超过指定的时间。
  如果在使用此方法时命令调度/处理被中断或超时,则命令结果将为 null  。
  在所有其他情况下,结果遵循引用的方法。命令调度结果
  一般来说,调度命令有两种可能的结果: 命令处理成功,并且 命令处理异常
  结果在某种程度上取决于调度过程,但更多地取决于命令处理程序的实现。 因此,如果  @CommandHandler   注解的函数由于某些业务逻辑而引发异常,则该异常将成为调度命令的结果。
  命令处理的成功解决故意不应提供任何返回对象。 因此,如果  CommandBus  /CommandGateway   提供响应(直接或通过 CommandResultMessage  ),那么您应该假设命令处理成功的结果返回 null  。
  虽然可以从命令处理程序返回结果,但这应该很少使用。 命令的意图不应该是检索一个值,因为这表明该消息应该被设计为一个查询消息。 例外情况是聚合根的标识符,或聚合根已实例化的实体的标识符。 该框架在聚合的  @CommandHandler   注解构造函数中内置了一个这样的异常。 如果 "命令处理构造函数" 已成功执行,而不是聚合本身,将返回 @AggregateIdentifier   注解字段的值。

老K想聊聊华为海思,麒麟能否浴火重生老K想聊聊海思!华为2004年成立海思半导体有限公司,前身是创建于1991年的华为集成电路设计中心,海思一开始做芯片也不是一帆风顺,在2012年推出海思k3v2移动端处理器,k3v业务员每天出门要带两部iPhone一部安卓机两个充电宝和三张手机卡,不然会没安全感,你怎么看?感谢您的阅读!我现在确实是这样的操作虽然不是业务员,每天工作原因,都必须带两部手机出门,一部手机工作生活一部手机娱乐休闲。当然,充电宝我是不带的,之前用的是小米充电宝,不过我觉得充几乎0差评的4款手机,价格覆盖中高低三档,可以闭眼入手回顾目前已经发布的手机,有些虽然配置全面价格低,但口碑非常低,导致这一现象的原因基本都是系统优化不当,机身品质太差,软硬件出现了冲突等等,但同时也有很多口碑特别高的手机,比如下面这为什么越来越多的人买手机不考虑华为?主要有这3大原因马上年底了,身边的亲朋好友又迎来了一小波换机高潮,考虑的手机品牌有苹果小米OPPOvivo,基本没有选择华为的。那么,为什么越来越多的人买手机不考虑华为呢?其实,我以前也算是一名忠手机界的八大王者品牌,华为小米苹果全都有纵观2021年,各品牌手机层出不穷,有些黑科技技术也从概念机阶段发展到了量产机阶段,大帅结合各品牌突出特点,总结了机圈八大王者系列。影像王者华为作为手机拍照系列的经典机型,华为P系浅谈新一代智能电能表支撑泛在电力物联网技术研究张星安科瑞电气股份有限公司上海嘉定201801摘要物联网技术在未来的电力能源体系发展中,已经成为一种重要的趋势,在现阶段的发展,具备感知广泛连接开放共享等特点。基于此,文中对电力物教程7国产编程语言Cbrother类定义类和对象类类是一个模板,它描述一类对象的行为和状态。对象对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有颜色名字品种行为有摇尾巴叫吃等。CBrother中的类类更智能更主动数字技术助推健康管理新模式科技日报记者崔爽如何将科技创新转化为医疗服务?近日召开的第二届中国健康管理国际论坛上,中国工程院院士上海理工大学光电信息与计算机工程学院院长庄松林抛出这样一个问题。尤其是在医学技术12月9日股市内参一投资资讯1阿里成立元境先生进一步布局元宇宙业务VR游戏领域受关注据报道,阿里近日成立全资子公司元境生生,阿里内部人士透露,该公司未来业务与元宇宙相关。今年9月,阿里云游戏事业部发亚马逊美国站卖家注意!您的美标该宣誓了,错过时间商标将会失效年终旺季收尾阶段,一年中重要的几个节日也相继而来,相信不少亚马逊卖家都已全力备战,准备大干一场了。亚马逊美国站作为最早开设的站点,受众群体广,吸引了大批中国卖家入驻。近几年,市场对无聊时的体验构想我设想了一种体验设计,把一副耳机埋进墙壁里或者埋进水泥墩里。两头分别露出插孔和听筒。那些没有带耳机的人,想要听歌的话,他需要在那个石头旁边或者在墙旁边。耳机的听筒可以设置的高一些也
高端净水器选购指南进口净水器十大品牌排名水是我们最不可缺少的物质,喝水做饭洗澡等,都离不开开水。但现实中,我们使用的自来水并不是绝对安全的,经常会有肉眼可见的杂质和刺鼻的氯气气味。为了让家里的自来水干净健康,安装净水器是进口净水器品牌哪个牌子好?净水器品牌推荐净水器排名前十名有哪些?净水器由于这两年的普及率提高,逐渐有很多人开始购买添置,但是仍然有一部分人还在犹豫要不要购买。为了健康饮水,选择在家里安装净水器是非常明智的。下面为大家介绍清高的戴森吸尘器这个315过得不安心,神坛地位越来越不稳马上到315了,相信是各家品牌公关部最忙也最担忧的日子,估计每一天少不了在网络上观察舆情。反正你们也忙着,今天我就掺一脚,聊聊戴森。戴森这个牌子大家都懂,一个吹风机售价几千块,一发凯菲勒净水器怎么样?凯菲勒净水器口碑好不好?随着近几年人们的健康意识越来越高,人们对用水的要求也是非常之高,自来水喝着有风险,桶装水喝着又怕不放心,因此很多的家庭都选择的净水器。凯菲勒净水器实力如何?KAOFL凯菲勒,隶属于净水器十大品牌凯菲勒净水器代理加盟怎么挑选厂家?随着科技生活的高速发展,越来越多的新型家居产品进入人们的视线,让更多人享受科技带来的便捷健康和乐趣。如今家用净水器也迈入了智能新时代,随着各大媒体越来频繁的对桶装水不合格等等水污染两周后立冬,进口凯菲勒净水器防冻指南学起来气温逐渐降低,寒凉之意也渐渐袭来,凯菲勒在此提醒各位家人要注意防寒保暖哦!但是,你知道吗?净水器其实也怕冷。由于水在0以下会结冰凝固,在凝固过程中体积会膨胀,导致管路滤桶膜壳等炸裂一线外设大厂里性价比最高的2。4G无线游戏耳机评测如果要问电竞耳机哪家最具性价比,HyperX毫无疑问是首选之一。一来HyperX的电竞耳机整体定价都是比较实惠的,二来它在中低端的布局也是很讲究,当然最重要的是它的整体口碑可以说是家用净水机选购三大坑,日常饮水,认准三点首先我们要明白一个问题为什么要在自己家装净水机?目的有两个第一是为了追求更好的口感第二是为了提高水质。如果没有市政自来水,或者自来水管道已经十来年没换过,那就需要当你确定了自己需要净水器加盟代理如何才能赚到钱?凯菲勒注意这几点现如今人们越来越注重生活饮水健康,购买净水器的家庭也越来越多,许多投资者看到净水器行业的庞大利益空间,想通过净水器加盟代理实现自己的创业梦想。厨房净水机加盟如何才能赚到钱?净水器加金秋十月装修季,凯菲勒带你开启品质用水新生活每年的九十月份都是装修旺季,这时候的气温既不像夏天这么炎热,也不像冬天那么寒冷,十分适合装修。也因此很多人选择这两个月进行装修,就有了金九银十装修季的风潮。除了以前装修中注重的空调2021年美国净水器十大品牌排名人体约75重量都是水,人类离不开水,水延续着我们的生命。但现实中,我们使用的自来水并不是绝对安全的,我国水污染事件频频发生,自来水发黄发混异味现象屡见不鲜,水环境整体情况不容乐观。