• 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:该部分只介绍使用,高级部分在后面文档说明。

  • 相关阅读:
    【Mysql】了解Mysql中的启动参数和系统变量
    【Mysql】初识MySQL
    【分布式搜索引擎】Elasticsearch之开启Elasticsearch的用户名密码验证
    SpringBoot------整合MyBatis
    SpringBoot------自定义拦截器
    SpringBoot------Servlet3.0的注解自定义原生Listener监听器
    SpringBoot------Servlet3.0的注解自定义原生Servlet
    SpringBoot------拦截器Filter的使用
    SpringBoot------如何将项目打成war包
    SpringBoot------Maven Install报错
  • 原文地址:https://www.cnblogs.com/CharlesZHENG/p/8343088.html
Copyright © 2020-2023  润新知