Spring boot 我可以在多个服务中对同一事件使用jackson和xstream序列化程序吗

Spring boot 我可以在多个服务中对同一事件使用jackson和xstream序列化程序吗,spring-boot,axon,Spring Boot,Axon,我有两个spring boot micro服务核心和网络: Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character (’<’ (code 60)): expected a valid value (JSON String, Number, Array, Object or token ‘null’, ‘true’ or ‘false’) core服务对由web触发的某些事件(Emplo

我有两个spring boot micro服务核心网络

Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character (’<’ (code 60)): 
expected a valid value (JSON String, Number, Array, Object or token ‘null’, ‘true’ or ‘false’)
core服务对由web触发的某些事件(EmployeeCreatedEvent)作出反应。 core服务使用jackson serializer来序列化命令、查询、事件和消息,而web服务使用xstream serializer。 我在处理由网站触发的EmployeeCreatedEvent时,发现核心中的以下错误:

Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character (’<’ (code 60)): 
expected a valid value (JSON String, Number, Array, Object or token ‘null’, ‘true’ or ‘false’)

是否有人可以建议在不同的服务中对同一事件使用不同的序列化程序。

我同意这里的@Augusto,您应该决定在所有服务中使用哪种序列化格式

我假设您从默认序列化程序(即
XStream
和XML)开始,然后决定转到
Jackson
(即JSON)。 在这种情况下,我可以与您分享两条建议:

  • 您可以编写一个具有两种实现的自定义序列化程序,并尝试使用这两种实现,然后查看哪一种可以工作,例如尝试使用XML和回退到JSON

  • 或者您可以拥有一个
    组件
    ,该组件将侦听来自
    事件存储
    的所有
    事件
    ,使用
    XStream
    反序列化它们,并使用
    Jackson
    将它们写回另一个
    事件存储
    。在这种情况下,对于此迁移期间,您将使用2个事件流(每个
    EventStore
    )创建此组件,但迁移完成后,整个
    EventStore
    将使用JSON。这需要一些工作,但在我看来,这是最好的方法,并将在未来为您节省大量时间和痛苦。 您可以查看有关配置2个源的更多信息


我同意@Augusto的观点,您应该决定在所有服务中使用哪种序列化格式

我假设您从默认序列化程序(即
XStream
和XML)开始,然后决定转到
Jackson
(即JSON)。 在这种情况下,我可以与您分享两条建议:

  • 您可以编写一个具有两种实现的自定义序列化程序,并尝试使用这两种实现,然后查看哪一种可以工作,例如尝试使用XML和回退到JSON

  • 或者您可以拥有一个
    组件
    ,该组件将侦听来自
    事件存储
    的所有
    事件
    ,使用
    XStream
    反序列化它们,并使用
    Jackson
    将它们写回另一个
    事件存储
    。在这种情况下,对于此迁移期间,您将使用2个事件流(每个
    EventStore
    )创建此组件,但迁移完成后,整个
    EventStore
    将使用JSON。这需要一些工作,但在我看来,这是最好的方法,并将在未来为您节省大量时间和痛苦。 您可以查看有关配置2个源的更多信息


我想说,对同一事件/命令使用不同的格式是不合适的。我想补充一点,现在最好咬紧牙关解决这个问题,并为所有事件提供一个通用的序列化,而不是通过修改一些东西来实现。我想说的是,对同一个事件/命令使用不同的格式是不合适的。我想补充一点,现在最好咬紧牙关解决这个问题,并为所有事件提供一个通用的序列化,而不是通过黑客攻击来实现。