我使用的Axon框架没有Axon服务器和Spring Boot自动配置。我有一个H2数据库,使用Spring auto配置。
谢了。
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