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

命令状态自动持久化[Axon框架]

高高雅
2023-03-14

我正在研究Axon框架,我很难理解命令状态的自动持久性。

我已经查看了有关命令模型存储库的文档,根据我的理解,只要有正确的依赖关系,标准存储库的命令模型的状态应该是自动持久化的。这种观点也出现在我看过的另一篇博客/教程中(您可能需要向下滚动到存储库部分)。

更新

根据Steven的注释(以及随后的注释),我决定尝试并实现一个状态存储的聚合,但是我发现聚合的(de)序列化存在一个问题。我已经将聚合发送给了Steven,他已经确认它非常简单,应该由XStream对其进行(de)序列化。我还尝试使用一个独立的XStream实例序列化我的聚合,它成功了,这使我相信这与其说是XStream问题,不如说是Axon问题。我还尝试使用Jackson和html" target="_blank">java(de)序列化器(因为它们是Axon提供的其他选项),发现了类似的问题。我已经得出结论,这是一个轴突缺陷,我已经停止试图解决这个问题。

共有1个答案

法和硕
2023-03-14

从您的问题中,还不清楚您是否知道可以选择的可能的命令模型存储机制。因此,首先,正如@mzzl在他的评论中指出的那样,您可以从两个角度查看命令模型状态:

  1. 事件来源
  2. 状态存储

默认情况下,Axon Framework将在集合后面设置EventSourcingRepository。这意味着,如果需要一个聚合(例如,您的命令模型)来处理一个新命令,将通过检索它已经发布的所有事件流来加载该聚合。其次,它将调用聚合实现上的所有@EventSourcingHandler注释方法,以重新创建命令模型的状态。最后,一旦处理了聚合事件流中的所有事件,该命令将提供给@commandhandler注释方法。

  1. AggregateConfigurer#DefaultConfiguration(class),用于事件源方法
  2. AggregateConfigurer#JPamappedConfiguration(class),用于状态存储方法

如果您的应用程序处于Spring Boot环境中,那么在事件源和状态存储之间切换要简单一些。只需在聚合实现上添加@entity注释就足以让框架注意到您希望按原样存储聚合。

希望这能对马耳他的情况有所了解!

然而,由于我们不确定您的集合的实现是什么,因此很难推断这是否是手头的问题。您能否在这里与我们分享您的实现,以便我们更好地推断是否是内部类的问题?

 类似资料:
  • 1. 前言 本节课和大家聊聊持久化对象的 3 种状态。通过本节课程,你将了解到: 持久化对象的 3 种状态; 什么是对象持久化能力。 2. 持久化对象的状态 程序运行期间的数据都是存储在内存中。内存具有临时性。程序结束、计算机挂机…… 内存中的数据将不复存在。 重要的数据,需要使用持久化技术将数据保存到永久性设备上。Hibernate 能够通过 PO(持久化对象) 将数据持久化到数据库。 Hibe

  • 到目前为止,我们已经构建了一个有工作量证明机制的区块链。有了工作量证明,挖矿也就有了着落。虽然目前距离一个有着完整功能的区块链越来越近了,但是它仍然缺少了一些重要的特性。在今天的内容中,我们会将区块链持久化到一个数据库中,然后会提供一个简单的命令行接口,用来完成一些与区块链的交互操作。本质上,区块链是一个分布式数据库,不过,我们暂时先忽略 “分布式” 这个部分,仅专注于 “存储” 这一点。 选择数

  • 本文向大家介绍vuex实现数据状态持久化,包括了vuex实现数据状态持久化的使用技巧和注意事项,需要的朋友参考一下 用过vuex的肯定会有这样一个痛点,就是刷新以后vuex里面存储的state就会被浏览器释放掉,因为我们的state都是存储在内存中的。 所以我们通过 vuex-persistedstate这个插件,来实现将数据存储到本地 用法很简单 1、 2、 以上这篇vuex实现数据状态持久化就

  • 名称 方法 实现 Hibernate 优势 劣势 Mybaties Jpa get 1. Hibernate 1.1 单独使用 1.1.1 For Idea 新建项目:【File】——>【New】——>【Project】——>【Java】——>【Hibernate、JavaEE Persistence】 添加数据连接驱动 配置数据源 根据数据库表生成实体类:【Persistence】——>【名称】

  • 我试着把我的头缠绕在Kafka的溪流和一些根本的问题,我似乎无法解决,我自己。我理解和Kafka状态存储的概念,但我很难决定如何实现它。我还在使用Spring Cloud Streams,这在此基础上增加了另一个层次的复杂性。 我的用例: 一些有状态规则如下所示: 我当前的实现将所有这些信息存储在内存中,以便能够执行分析。由于显而易见的原因,它不容易扩展。所以我想我会坚持到Kafka的州立商店。

  • 什么是 Volume Volume 就是在一个或者多个容器里有特殊用途的目录。它绕过了容器内部的文件系统为持久化数据、共享数据提供了下面这些有用的特性: 容器可以通过把数据写在 Volume 上来实现数据持久化 Volume 可以在不同的容器之间共享和重用数据 容器数据的备份、恢复和迁移都可以通过 Volume 实现 通过 Volume 实现多容器共享数据,从而实现应用的横向扩展 在 DaoClo