Actor-ES框架: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:事件过期时标记。

  • 无参构造函数

    • 作用:反序列化时用。

    • 备注:必须写。

  • 自定义属性与有参构造函数

    • 自定义属性:Event中用到的参数。

    • 有参构造函数:用于自定义属性的初始化。

  • 事件过期

    • 弃用事件标记为Obsolete。

    • 新事件在业务逻辑上做兼容性处理。


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


    相关文章:

    • Actor-ES框架:Ray


    原文地址:http://www.cnblogs.com/CharlesZHENG/p/8343088.html


    .NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之策略模式在地铁票价系统中的应用

引言设计模式是面向对象编程的一个非常精彩的部分。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性,它能帮助我们将应用组织成容易了解,容易维护,具有弹性的架构。本文通过一个简单的案例来讲述策略模式在地铁票价系…

Sentinel(十九)之主流框架的适配

转载自 主流框架的适配 注:适配模块仅提供相应适配功能,若希望接入 Sentinel 控制台,请务必参考 Sentinel 控制台文档。 云原生微服务体系 Spring Cloud Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。Sentinel 与 Spring …

利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏

【先上一张效果图】:一、原理:其实原理很简单:1.手机投屏到电脑;2.截取投屏画面的题目部分,进行识别,得到题目和三个答案;3.将答案按照一定的算法,进行搜索,得出推荐答案…

Sentinel(二十)之Envoy RLS Token Server

转载自 Envoy RLS Token Server Sentinel 提供了一个 Envoy Global Rate Limiting gRPC Service 的实现 sentinel-cluster-server-envoy-rls,借助集群限流 token server 来为 Envoy 服务网格提供集群流量控制的能力。 Note: You can refer to here for the Englis…

g4e基础篇#5 创建分支和保存代码

使用版本控制系统最常见的工作流程就是修改代码,保存代码,共享代码。Git提供了一个简单的3步工作流,让你方便的完成这些操作。1. 新建工作分支2. 提交更改3. 推送分支到中心存储库与团队成员共享Git 工作流按照以上3步操作,我们就…

P3952-时间复杂度【模拟】

正题 题目链接:https://www.luogu.org/problemnew/show/P3952 题目大意 比较复杂就直接给截图了 解题思路 开一个栈来维护序列,因为它保证合法的程序中一个变量不会相互嵌套所以就拿变量的字母当做每个循环的下标即可。然后对于输入的x,yx,yx,y有五种情况 xN,yN…

一步步部署基于Windows系统的Jenkins持续集成环境

如题:本文将介绍如何在Windows环境下运用Jenkins部署持续集成环境。之所以写本文,是因为在最近工作当中,学习使用Jenkins时,确实遇到了一些问题,而大多数教程文档都是基于Mac或是Linux平台。为此很是头疼,经…

Sentinel(二十二)之使用Nacos存储规则

转载自 Spring Cloud Alibaba基础教程:Sentinel使用Nacos存储规则 通过上一篇《使用Sentinel实现接口限流》的介绍,相信大家对Sentinel已经有了初步的认识。在Spring Cloud Alibaba的整合封装之下,接口限流这件事情可以非常轻易的整合到我们…

vue 开发2017年变化回顾及2018年展望

vue.js 变化从 github 的发布记录我们可以看到2017年 vue.js 的第一个发布为 v2.1.9,最后一个为 v2.5.13,主要发布小版本 2.2~2.5。这些发布提升了vue 与 TypeScript 的结合、改进了对服务端渲染(SSR)和 native 渲染的支持、提供了…

Sentinel(二十三)之使用Apollo存储规则

转载自 Spring Cloud Alibaba基础教程:Sentinel使用Apollo存储规则 上一篇我们介绍了如何通过Nacos的配置功能来存储限流规则。Apollo是国内用户非常多的配置中心,所以,今天我们继续说说Spring Cloud Alibaba Sentinel中如何将流控规则存储…

Quartz.Net分布式任务管理平台

前言:我相信大多数人公司的业务上都有定时任务这么个功能,我们公司也不例外,刚来公司的时候使用Quartz.Net为我们组做了第一个任务,大致流程是:新建一个控制台程序,引用需要的程序集,Execute方法…

Sentinel(二十四)之Sentinel Dashboard中修改规则同步到ZooKeeper

转载自 Springboot使用Sentinel限流,集成zookeeper完成规则的持久化 上一篇简单介绍了sentinel限流的基本配置和使用,这一篇我们来稍微深入一点,看看如何将zookeeper继承进来,用以保存添加的流控规则。 上一篇中我们启动了dash…

微软Azure AspNetCore微服务实战第2期(内附PPT下载)

2018年1月28日,虽然上海的大雪在城区已经见不到踪影,但还是很冷。不过天气再冷,也阻止不了小伙伴参加活动的热情。感谢王振,苏老师以及微软Azure API Management的产品经理Alvin,给大家带来微服务实战,企业…

Sentinel(二十五)之Sentinel Dashboard同步Apollo存储规则

转载自 Spring Cloud Alibaba基础教程:Sentinel Dashboard同步Apollo存储规则 在之前的两篇教程中我们分别介绍了如何将Sentinel的限流规则存储到Nacos和Apollo中。同时,在文末的思考中,我都指出了这两套整合方案都存在一个不足之处&#…

为什么选择.NETCore?

为什么选择.NETCore?在开展话题之前先出一张ASP.NETCore VS Node.js的性能对比图 ASP.NET Core VS node.js:继续正文:学习新的开发框架是一项巨大的投资。您需要学习如何在新框架中编写,构建,测试,部署…

欢乐纪中某A组赛【2019.7.10】

前言 好烦我最后写对了T1T1T1的808080分结果交错题导致T2T2T2的404040分没了T1T1T1也没拿多那些分。 话说好像ZDYZDYZDY比我还惨 成绩 这里还是按OJOJOJ上的分数排名 JJJ表示初中,HHH表示高中后面加的是几年级 RankRankRankPersonPersonPersonScoreScoreScoreAAA…

用C#编写Linux守护进程

如果要在Red Hat Enterprise Linux上将.NET Core进程作为后台进程运行,则可以创建自定义systemd单元。今天我将为.NET Core编写两个自定义系统单元的例子。一个是运行.NET Core控制台应用程序的一种类型,另一个是运行ASP.NET Core Web应用程序的简单类型…

AWS Lambda现已支持.NET Core 2.0

Amazon宣称.NET Core 2.0现在已经支持AWS Lambda以及无服务器应用程序了。开发者们现在可以使用C#和.NET Core 2.0来为AWS Lambda编写代码和编写运行于AWS的无服务器应用程序了。自2017年2月Amazon开始了对C#编程语言的支持,这使得.NET开发者能够使用.NET Core 1.0运…

Nacos(一)之简介

转载自 什么是 Nacos Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现…

开源纯C#工控网关+组态软件(八)表达式编译器

一、 引子监控画面的主要功能之一就是跟踪下位机变量变化,并将这些变化展现为动画。大部分时候,界面上一个图元组件的某个状态,与单一变量Tag绑定,比如电机的运行态,绑定一个MotorRunning信号;但有些时候…