【问题标题】:Axon stores events as XML instead of JSONAxon 将事件存储为 XML 而不是 JSON
【发布时间】:2021-08-17 13:13:09
【问题描述】:

我是 Axon 框架的新手,我想配置 Axon 以便将事件存储为 JSON。 我正在使用 Spring-Boot,并且根据文档,我在 .properties 文件中设置了一些键/值

我希望看到存储为 JSON 的事件,但我一直在 MongoDB 事件存储的 serializedPayload 中看到 XML。 我想我已经正确配置了序列化程序,但显然我做错了什么

请注意,在调试应用程序时,似乎永远不会调用 JacksonSerializer 类,而是调用 XStreamSerializer 类,甚至我的键/值配置。 所以我需要了解为什么我的杰克逊配置没有调用正确的序列化程序

【问题讨论】:

    标签: axon axon-framework


    【解决方案1】:

    您必须配置MongoEventStorageEngine 才能使用您想要的Serializer

    查看它的 Builder(特别是 javadoc),您可以看到它提供了 snapshotSerializereventSerializer 方法,而 javadoc 指出它们都默认为 XStreamSerializer

    如果您在配置它时需要帮助,我可以将您指向mongo-axon-example,您可以在其中看到已配置并正在运行的项目。 该示例未使用Jackson,但配置它应该很容易here

    【讨论】:

    • 谢谢,但如果我尝试将 JacksonSerializer 添加到 MongoEventStorageEngine 我得到: JacksonSerializer(org.axonframework.serialization.json.JacksonSerializer.Builder)' has protected access in 'org.axonframework.serialization .json.JacksonSerializer。你知道如何避免这种情况吗?
    • 嗨,Matteo,是的,Builder 受到保护。您必须使用JacksonSerializer.defaultSerializer()JacksonSerializer.builder().anyOptionYouWantToSet().build()
    【解决方案2】:

    即使文档似乎没有提及,在 .properties 文件中添加键/值也是不够的。您还需要将 JacksonSerializer 添加到 MongoEventStorageEngine,如下所示:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2021-12-11
      • 1970-01-01
      相关资源
      最近更新 更多