(Dnc系列)借助Dnc.Events.InMemory在三分钟实现一个内存级别的事件驱动处理模型
前言
Dnc.Events是在借鉴领域驱动设计大佬daxnet的博客基础上做的基于内存级别的EDA处理模型,不清楚EDA的童鞋请自行百度。
第一分钟 安装Nuget Dnc.Events.InMemory
新建一个控制台项目并安装依赖

Instal-Package dnc.events.inmemory
添加appsettings.json并设置事件存储的文件路径
{
"ConnectionStrings": {
"event_store": "f://event_store.txt"
}
}
注意设置:appsettings.json为较新复制或者一直复制,不然会抛出异常

第二分钟 定义一个事件和事件的处理器
事件,依赖于基类DomainEvent
public class TimeUpdatedEvent
: DomainEvent
{ }
事件处理器,继承自DomainEventHandler<>
public class VersionSetEventHandler
: DomainEventHandler<VersionSetEvent>
{
public VersionSetEventHandler(IEventStore eventStore)
: base(eventStore)
{ }protected override Task HandleAsync(VersionSetEvent @event)
{
var version = @event.Version;
return Task.FromResult(version);
}
}
第三分钟 服务注册和订阅发布
服务注册,服务注册依赖于Dnc.Core的注册机制,事件注册服务,build构建ServiceProvider

Fx.SrvRegisteredEvent += services =>
{
services.AddScoped<IEventHandler, VersionSetEventHandler>();
};
Fx.CreateDefaultConstruction().Build();
使用事件总线订阅和发布事件
var eventbus = Fx.Resolve<IEventBus>();
var eh = Fx.Resolve<IEventHandler>();
var es = Fx.Resolve<IEventStore>();
eventbus.Subscribe();
eventbus.PublishAsync(new VersionSetEvent());
后记
事件驱动、cqrs是领域驱动里面比较重要的概念,今天带着大家做了个简单的例子,这对于理解事件驱动的相关概念是蛮有帮助的。源码地址https://www.nuget.org/packages/Dnc.Events.InMemory/Dnc.Events.InMemory
(Dnc系列)借助Dnc.Events.InMemory在三分钟实现一个内存级别的事件驱动处理模型的更多相关文章
- 三分钟搭建一个自己的 ChatGPT (从开发到上线)
原文链接:https://icloudnative.io/posts/build-chatgpt-web-using-laf/ OpenAI 已经公布了 ChatGPT 正式版 API,背后的新模型是 ...
- 三分钟掌握共享内存 & Actor并发模型
吃点好的,很有必要.今天介绍常见的两种并发模型: 共享内存&Actor 共享内存 面向对象编程中,万物都是对象,数据+行为=对象: 多核时代,可并行多个线程,但是受限于资源对象,线程之间存在对 ...
- 三分钟掌控Actor模型和CSP模型
回顾一下前文<三分钟掌握共享内存模型和 Actor模型> Actor vs CSP模型 传统多线程的的共享内存(ShareMemory)模型使用lock,condition等同步原语来强行 ...
- Intellij Idea系列之Tomcat环境的搭建(三)
Intellij Idea系列之Tomcat环境的搭建(三) 一. 编写背景 Intellij Idea在刚上手的时候很多人吐槽,"god, 这么难用的IDE有谁用呀?",的确,I ...
- 《Entity Framework 6 Recipes》翻译系列 (4) -----第二章 实体数据建模基础之从已存在的数据库创建模型
不知道对EF感兴趣的并不多,还是我翻译有问题(如果是,恳请你指正),通过前几篇的反馈,阅读这个系列的人不多.不要这事到最后成了吃不讨好的事就麻烦了,废话就到这里,直奔主题. 2-2 从已存在的数据库创 ...
- zw版【转发·台湾nvp系列Delphi例程】.NET调用HALCON COM控件内存释放模式
zw版[转发·台湾nvp系列Delphi例程].NET调用HALCON COM控件内存释放模式 ------------------------------------方法一 :Imports Sys ...
- LIN、CAN、FlexRay、MOST,三分钟搞明白四大汽车总线
LIN.CAN.FlexRay.MOST,三分钟搞明白四大汽车总线 2016-09-21 13:09 汽车中的电子部件越来越多,光是ECU就有几十个,这么多的电子单元都要进行信息交互.传统的点对点通信 ...
- 一片非常有趣的文章 三分钟读懂TT猫分布式、微服务和集群之路
原文http://www.cnblogs.com/smallSevens/p/7501932.html#3782600 三分钟读懂TT猫分布式.微服务和集群之路 针对新手入门的普及,有过大型网站技 ...
- 三分钟快速上手TensorFlow 2.0 (中)——常用模块和模型的部署
本文学习笔记参照来源:https://tf.wiki/zh/basic/basic.html 前文:三分钟快速上手TensorFlow 2.0 (上)——前置基础.模型建立与可视化 tf.train. ...
- 简单三分钟,本地搭建 k8s
使用 minikube 在本地搭建 k8s 已经比以前要简单很多了.本文,我们通过简短的三分钟来重现一下在本地搭建 k8s 实验环境的步骤. Newbe.Claptrap 是一个用于轻松应对并发问题的 ...
随机推荐
- Host-Only模式下虚拟机无法联网问题
环境: 镜像:Linux CentOS7 \-----------------------------------------\ 问题描述: 虚拟设置了Host-Only模式的虚拟网卡VMNet4,并 ...
- 前端框架——Vue3
文章目录 Vue3快速上手 1.Vue3简介 2.Vue3带来了什么 1.性能的提升 2.源码的升级 3.拥抱TypeScript 4.新的特性 一.创建Vue3.0工程 1.使用 vue-cli 创 ...
- Ubuntu更新软件的命令
更新软件源 apt-get update 更新升级所有软件 apt-get upgrade 更新某个软件 apt-get upgrade 名 列出可更新的软件 apt list --upgradabl ...
- crontab guru
https://crontab.guru/every-5-minutes Cron Job Monitoring crontab guru The quick and simple editor fo ...
- 垃圾000000000000000000000写了很多,保存不上,发送失败了。。。。。A
垃圾000000000000000000000写了很多,保存不上,发送失败了.....A垃圾000000000000000000000写了很多,保存不上,发送失败了.....A垃圾0000000000 ...
- Pricing
Skip to main content Site Navigation Research Product Developers Safety Company Search Pricing Sim ...
- Android Orm框架(GreenDao)
Android Orm框架(GreenDao) 分类: android2014-04-10 14:29 723人阅读 评论(0) 收藏 举报 GreenDao与Ormlite对比 Ormlite:简单 ...
- CF1294C
题目简化和分析: 使得 \(a \times b\times c=n~~~~(a\ne b\ne c)\) 思路: 先枚举最小的 \(a\) ,(以下程序的返回值为最小因数(有部分优化),即 \(a\ ...
- Kubernetes集群管理面板的安装及使用
Kubernetes集群管理面板的安装及使用 1.前言 若海的腾讯云Lighthouse组建跨地域Kubernetes集群,让我成功体验到了Kubernetes集群诸多优点,但是非技术出生的我,长时间 ...
- 记Halo1.5版本迁移Halo2.10.0版本
原文地址: 记Halo1.5版本迁移Halo2.10.0版本 - Stars-One的杂货小窝 上一篇Window10安装linux子系统及子系统安装1Panel面板 - Stars-One的杂货小窝 ...