• 3.Ray-Event编写


    Event作用:

    • 存储事件数据。
    1. IEventBase
      K:是Actor的StateId的类型,可以是long、可以是string,Ray一般使用OGuid生成的字符串作为主键。

    2. 编写Event继承IEventBase接口,Base部分如下:

               public string Id { get; set; }
               public uint Version { get; set; }
               public string CommandId { get; set; }
               public DateTime Timestamp { get; set; }
               public string StateId { get; set; }
               public string TypeCode => this.GetType().FullName;
      
       Id:
       - 含义:当前Event的Id。
       - 作用:标识当前Event。
       - 备注:不赋值时,Ray会自动赋值。
      
       Version:
       - 含义:Event的版本戳。
       - 作用:防止事件乱序。
       - 备注:Ray会自动赋值。
      
       CommandId:
       - 含义:当前Event的CommandId。
       - 作用:一个请求(Command)可能会引发多个Event,多个Event之间拥有相同的CommandId,多个Event通过CommandId建立联系。
       - 备注:不需要时默认为null。
      
       Timestamp:
       - 含义:当前Event的时间戳。
       - 作用:记录当前Event的发生时间,时间为UTC时间。
       - 备注:不赋值时,Ray会自动赋值。
      
       StateId:
       - 含义:Actor的Id。
       - 作用:记录引发事件的Actor的Id。
       - 备注:Ray会自动赋值。
      
       TypeCode:
       - 含义:事件的类型。
       - 作用:事件存储时会存储为二进制,重放时用于反序列化为对应的类型。
       - 备注:public string TypeCode => this.GetType().FullName。
      
    3. 特性说明
      • ProtoContract:Ray默认使用ProtoBuf对Event序列化。
      • Immutable:Actor之间使用的时候。
      • Obsolete:事件过期时标记。
    4. 无参构造函数
      • 作用:反序列化时用。
      • 备注:必须写。
    5. 自定义属性与有参构造函数
      • 自定义属性:Event中用到的参数。
      • 有参构造函数:用于自定义属性的初始化。
    6. 事件过期
      • 弃用事件标记为Obsolete。
      • 新事件在业务逻辑上做兼容性处理。

    API:该部分只介绍使用,高级部分在后面文档说明。

  • 相关阅读:
    WCF如何通过契约加编码方式调用
    编码为multipart/form-data自定义类型(包括文件)如何自动绑定到webapi的action的参数里
    MSMQ消息队列
    使用windows服务和MSMQ和进行日志管理(解决高并发问题)
    二叉树的三种遍历方式
    go语言的3个包——strconv、os.Args、flag
    公钥、私钥、签名、数字证书的关系
    go语言实现单链表
    Go语言学习笔记(10)——错误处理示例
    go语言实现链式栈
  • 原文地址:https://www.cnblogs.com/CharlesZHENG/p/8343088.html
Copyright © 2020-2023  润新知