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

Axon框架从domain_event_entry表中读取所有事件,并不序列化其中的有效负载

欧桐
2023-03-14

我使用的Axon框架没有Axon服务器和Spring Boot自动配置。我有一个H2数据库,使用Spring auto配置。

谢了。

共有1个答案

祖利
2023-03-14

EventStore接口本身实际上只包含读取给定聚合的事件的方法。但是,该接口实现StreamableMessageSource接口(您可以在这里找到)。

通过这个接口,EventStore为您提供OpenStream(TrackingToken)方法。TrackingToken指定要在流中的哪个点启动。简而言之,如果提供null作为TrackingToken,则流将在时间开始时打开(当然是针对所述事件流)。

不过请注意,我通常建议不要直接查询EventStore。Axon通过在注册到存储的事件处理程序类中起草一个@EventHandler注释方法(使用Spring Boot auto configuration时,这是自动完成的),提供了一个非常好的基于注释的事件处理方法。

作为一个在单个事件处理函数中读取所有事件的短手,您可以执行以下操作:

@EventHandler
public void on(Object event) {
    // Perform event handling logic
}

在这个片段中,我执行了一些技巧。默认情况下,Axon将为所述事件的最具体实现提供一个事件。由于Java中的所有内容都实现Object,因此只需使用一个事件处理程序,其中第一个参数(请注意,第一个参数总是事件有效负载)类型为Object就可以解决这个问题。

现在,对于您发布的最后一个问题(我建议您以后单独提出这个问题,以保持对堆栈溢出的关注):

如果禁用反序列化,那么我可以告诉您,您必须自己查询实际的数据库,或者对EventStorageEngine进行大量定制(存储引擎是EventStore用于从数据库中检索事件的)。AxonIQ团队正在考虑添加这样一个特性,但我可以向您保证,这还没有实现。

希望这澄清了你的选择@polosoft!

 类似资料:
  • 您可以在下面看到我的示例类。 基本上,我希望使用Axon的表来存储事件,并使用我自己的实体表来存储实体。我知道,如果我激发在聚合中处理的,将发布一个事件,之后它将转到,Axon将在其表中持久化该事件。 如何回滚表,还是应该为此使用补偿事件? 我的外部@EventHandler类:

  • 我目前正在用PostgreSQL中的Axon-framework设置一个事件存储(spring boot,axon-spring-boot-starter,axon-server-connector从依赖项中删除)。 系统按预期加载,我可以看到命令、事件和事件处理程序按预期工作。 此外,我认为元数据应该包含其他整数。 这是正确的吗?我是不是错过了一些额外的配置?

  • 如何读取自创建以来该聚合的所有事件?

  • 问题内容: 我有一个6列5行的表。我想选择所有行并使用(ASP.NET C#)仔细阅读它们。我目前可以使用访问单个列并将其存储在字符串变量中。 我想逐行阅读各列。 感谢您的帮助。 问题答案: 如果要将行和列存储到某种类型的集合中,可以尝试使用“列表和字典”,这将使您可以根据需要添加任意多的行。

  • 问题内容: 我有一个文件,称之为。 有没有一种方法可以“读取”其中的内容,并获取其中的所有类的列表作为完整的类名,包括其包,例如? 我在考虑,但是似乎找不到用于检索整个类集的方法。 问题答案: 您可以将dexlib2库用作独立库(在maven中可用),以读取dex文件并获取类列表。 请注意,类名将采用“ Ljava / lang / String;”的形式,这就是它们如何存储在dex文件(和Jav