【问题标题】:JOliver's EventStore: Cannot read events when using ServiceStack serializerJOliver 的 EventStore:使用 ServiceStack 序列化程序时无法读取事件
【发布时间】:2020-10-27 18:34:48
【问题描述】:

使用 ServiceStack 时,EventMessage.Body 不会反序列化回原始对象。而 EventMessage.Body 是一个 JSON 字符串。

复制:

  1. 打开 EventStore 项目并导航到 EventStore.Example 项目
  2. 将 EventStore.Serialization.Json 引用替换为对 EventStore.Serialization.ServiceStack 的项目引用
  3. 在 EventStore.Example 项目上关闭程序集签名
  4. 将 MainProgram.WireupEventStore 更改为 .UsingServiceStackJsonSerialization()
  5. 在 MainProgram.Main() 的末尾附近添加以下代码:

-

var stream = store.OpenStream(StreamId, 0, int.MaxValue);
var myFirstEvent = (SomeDomainEvent) (stream.CommittedEvents.First().Body);
Console.Out.WriteLine("MyFirstEvent.Value=" + myFirstEvent.Value);

【问题讨论】:

    标签: cqrs event-sourcing neventstore


    【解决方案1】:

    如果它是一个字符串并且你期待 SomeDomainEvent 你可以使用 ServiceStack 的 FromJson 扩展方法,即:

    var myFirstEvent = stream.CommittedEvents.First().Body.FromJson<SomeDomainEvent>();
    Console.Out.WriteLine("MyFirstEvent.Value=" + myFirstEvent.Value);
    

    【讨论】:

    • 通过这个解决方案,我们最终将事件反序列化了两次,这几乎否定了从 Newton 切换到 ServiceStack 的任何性能优势。最后我认为这是 EventStore/ServiceStack 插件的错误,或者我们使用不正确。我赞成你的回答,但没有回答这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    相关资源
    最近更新 更多