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

2. Event编写的更多相关文章

  1. 1.Actor编写-ESGrain与ESRepGrain

    ESGrain 生命周期 Ray中ESGrain继承自Grain扩展了Grain的生命周期.Grain的生命周期参见文档附录:1-Grain生命周期-译注.md ESGrain重写了Grain的OnA ...

  2. Ray-基础部分目录

    基础部分: 引言 Actor编写-ESGrain与ESRepGrain 消息发布器与消息存储器 Event编写 Handler之CoreHandler编写 Handler之ToReadHandler编 ...

  3. 编写高质量代码改善C#程序的157个建议——建议40:使用event关键字为委托施加保护

    建议40:使用event关键字为委托施加保护 在建议中我们实现了一个具有通知功能的文件传输类,如下: class FileUploader { public delegate void FileUpl ...

  4. 如何利用ETW(Event Tracing for Windows)记录日志

    ETW是Event Tracing for Windows的简称,它是Windows提供的原生的事件跟踪日志系统.由于采用内核(Kernel)层面的缓冲和日志记录机制,所以ETW提供了一种非常高效的事 ...

  5. iOS 触摸事件与UIResponder(内容根据iOS编程编写)

    触摸事件 因为 UIView 是 UIResponder 的子类,所以覆盖以下四个方法就可以处理四种不同的触摸事件: 1.  一根手指或多根手指触摸屏幕 - (void)touchesBegan:(N ...

  6. [转载]C#委托和事件(Delegate、Event、EventHandler、EventArgs)

    原文链接:http://blog.csdn.net/zwj7612356/article/details/8272520 14.1.委托 当要把方法作为实参传送给其他方法的形参时,形参需要使用委托.委 ...

  7. C#编写window服务,一步一步(1)

    Window服务是啥,这里就不废话了,如何用在哪里用也不废话了,这里我这篇文章只是详述了我在vs2012中创建window服务的经过,希望对你有所帮助. 另外:我在编写服务过程中参考了 Profess ...

  8. 关于编写性能高效的javascript事件的技术

    如何能做出高效的web前端程序是我每次做前端开发都会不自觉去考虑的问题.几年前雅虎里牛逼的前端工程师们出了一本关于提升web前端性能的书籍,轰动了整个web开发技术界,让神秘的web前端优化问题成为了 ...

  9. Christmas Trees, Promises和Event Emitters

    今天有同事问我下面这段代码是什么意思: var MyClass = function() { events.EventEmitter.call(this); // 这行是什么意思? }; util.i ...

随机推荐

  1. 使用 Kafka 和 ELK 搭建测试日志系统(1)

    本文仅供自己学习,不合适转载. 这是两篇文章的第一部分. 1. 安装 ELK 1.1 安装 ElasticSearch 在海航云上创建一个 Ubutu 16.4 虚机,2核4GB内存. (1)执行以下 ...

  2. Java 包装类Integer的值比较

    对于包装类型Integer的值比较与int的值比较是不同的:   public class Java_Val_Compare { public static void main(String[] ar ...

  3. MyBatis map foreach

    以下资料来源于网络,仅供参考学习.   mybatis 遍历map实例 map 数据如下 Map<String,List<Long>>.   测试代码如下: public vo ...

  4. PHP array_map()

    PHP array_map() 函数 将函数作用到数组中的每个值上,每个值都乘以本身,并返回带有新值的数组: <?php function myfunction($v) { return($v* ...

  5. TCP协议(二)——TIME_WAIT状态

    当TCP主动关闭套接字时,采用四步握手机制来彻底关闭连接.如图: 客户端主动关闭连接,发送FIN段到服务端.TCP状态由ESTABLISHED(连接状态)转为FIN_WAIT1(表示,发送的FIN需要 ...

  6. 3D轮播切换特效 源码

    这个3D轮播切换特效是我2017年2月份写的 当初我 刚接触HTML不久,现在把源码分享给大家 源码的注释超级清楚 . <!-- 声明文档类型:html 作用:符合w3c统一标准规范 每个浏览器 ...

  7. PHP进阶,使用交互模式进行快速测试实验?

    额,那啥,PHP很强,大家都知道哈.不过呢,在搞PHP里的人中,自然也要分高下的.当然了,我更喜欢用好玩来形容了. 什么叫做快速开发?我觉得,快就得快到随手写几个字,就能让代码跑起来!那么,PHP能做 ...

  8. tornado返回指定的http code

    最近做web api,需要在接口返回异常时,返回对应的http code. 查了下tornado的文档,是通过set_status方法来设置返回的http code,做个记录. self.set_st ...

  9. Netty入门之客户端与服务端通信(二)

    Netty入门之客户端与服务端通信(二) 一.简介 在上一篇博文中笔者写了关于Netty入门级的Hello World程序.书接上回,本博文是关于客户端与服务端的通信,感觉也没什么好说的了,直接上代码 ...

  10. Mongodb集群【三】

    Mongodb常用三种集群 1 主从(Master/Slave) 不推荐,但是mongodb依然保留有.一主多从,不支持链式结构.简单主从,没有裁仲者不能自动恢复. 2 副本集(Relica Set) ...