序列化具有相同 class 但不同包的对象是否会导致 Axon 出错?
Does serialization of objects with same class but different packages cause an errors in Axon?
我看了一篇博客post,有这样一句话
"在 Axon 中,存在要求事件 class 的包结构相同的约束。
所以即使是一样的class,如果包不一样也会出错。"
因此,他建议使用多模块结构。
是真的吗?我正在查看参考资料并试图找到类似的东西,但我找不到。
这一点是对的,@YongD。
Axon Framework 在序列化任何对象时,将存储序列化格式和类型。最常存储的序列化格式是 XML 或 JSON 的 byte[]
。两者中的哪一个取决于您是否配置了 XStreamSerializer
或 JacksonSerializer
.
所以在序列化数据旁边,我们有类型。默认情况下,类型将是完全限定的 class 名称和可选的修订号。如果没有完全限定的 class 名称,序列化程序将不知道如何将您的数据反序列化回所需的格式。包名称是 FQCN 的一部分,概念上相同的包名称不同 class 可能会导致反序列化问题。
这就是为什么在 AxonIQ 提供的示例项目中,您总是会看到 所有 消息属于 core-api
或 api
包或模块。已经有了这种分离将允许在稍后阶段更容易地将服务提取到微服务中。
我看了一篇博客post,有这样一句话 "在 Axon 中,存在要求事件 class 的包结构相同的约束。 所以即使是一样的class,如果包不一样也会出错。"
因此,他建议使用多模块结构。
是真的吗?我正在查看参考资料并试图找到类似的东西,但我找不到。
这一点是对的,@YongD。
Axon Framework 在序列化任何对象时,将存储序列化格式和类型。最常存储的序列化格式是 XML 或 JSON 的 byte[]
。两者中的哪一个取决于您是否配置了 XStreamSerializer
或 JacksonSerializer
.
所以在序列化数据旁边,我们有类型。默认情况下,类型将是完全限定的 class 名称和可选的修订号。如果没有完全限定的 class 名称,序列化程序将不知道如何将您的数据反序列化回所需的格式。包名称是 FQCN 的一部分,概念上相同的包名称不同 class 可能会导致反序列化问题。
这就是为什么在 AxonIQ 提供的示例项目中,您总是会看到 所有 消息属于 core-api
或 api
包或模块。已经有了这种分离将允许在稍后阶段更容易地将服务提取到微服务中。