基于事件驱动架构构建微服务第13部分:使用来自Apache KAFKA的事件并将投影流传输到ElasticSearch...

原文链接:https://logcorner.com/building-microservices-through-event-driven-architecture-part13-read-model-projection-project-streams-into-elasticsearch/

在本教程中,我将展示如何从KAFKA读取流并将流投影到ElasticSearch中。

我必须使用来自KAFKA的消息,我从KAFKA读取的消息是事件流。所以我必须将这些流投影到结构化表示中。然后我会将投影索引到ElasticSearch中。

所以我会建立一个订阅KAFKA并监听事件的消费者。如果它接收到一个event,它将使用投影来创建该事件的结构演示。最后将其存储到一个nosql数据库ElasticSearch。

投影事件

实际上,读取数千个事件会花费太长时间,相反我们可以预先计算当前状态并将其存储到nosql数据库中。投影可以定义为从一系列事件中导出的当前状态

我定义了一个基本的泛型类Entity,因此每个投影都将从它派生。

8c2ad52c9f8dea79e9412aa1af15eeb6.png

我定义了一个抽象的泛型类Projection,它接受一个事件列表并将它们应用于具体类(在我们的例子中是 SpeechProjection)。

eeb4f9189bb809869194e7d892a0d43b.png

SpeechProjection是一个表示我想从事件(SpeechCreatedEvent、SpeechTitleChangedEvent、SpeechDescriptionChangedEvent、SpeechUrlChangedEvent和SpeechTypeChangedEvent)重建其状态的实体的类。

因此,对于与给定实体(语音)相关的每个事件,我必须将事件应用于实体。

2a6a6dac5f0f731de363256b9aca61d7.png

ElasticSearch介绍

Elasticsearch是一种分布式RESTful搜索和分析引擎,能够处理越来越多的用例。作为Elastic Stack的核心,它集中存储你的数据,以实现闪电般的快速搜索、微调相关性和可轻松扩展的强大分析。https://www.elastic.co/elasticsearch/

转到以下链接安装elasticsearch:https://www.elastic.co/downloads/elasticsearch

你可以通过使用PowerShell运行以下命令 curl http://localhost:9200/ 或 Invoke-RestMethod http://localhost:9200 来验证安装是否正常

bccace0f039ae2b19937296181e83f13.png

以下代码创建一个通用存储库以连接到弹性搜索,并执行CRUD操作。

76a52cf48aa8e11033c781dd008fa1f4.png

创建工作服务

ASP.NET Core Worker Service模板为编写长时间运行的服务应用程序提供了一个起点。

我们可以使用工作服务来构建不需要用户交互或执行定期和长时间运行的工作负载的应用程序。

https://docs.microsoft.com/fr-fr/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-5.0&tabs=visual-studio

我将使用Worker Service构建一个消费服务,该服务消费来自APACHE KAFKA的事件并将它们索引到ElasticSearch

ConsumerHostedService

09c40c1adc5b2c1354882f578d33b31a.png

ConsumerHostedService是承载ConsumerService的后台服务

ConsumerService

ConsumerService调用服务总线,该总线在产生新事件时从Kafka接收通知。

d7f0104b98a4bb60cebf67bf449b8057.png

服务总线

KafkaClient

KafkaClient实现了IServiceBusProvider的ReceiveAsync。它订阅了一个Kafka主题,因此当一个事件发布到该主题时,它会通知一个中介服务。

2f88ca6381d23a9e1c7e4124e71ab6c8.png

ElasticSearchNotifier实现了INotificationHandler。这个类的职责是反序列化输入事件并将其索引到elasticsearch。

979d0064e2674536f14c759913547b5d.png

测试

启动zookeeper

zookeeper-server-start.bat config\zookeeper.properties

4b0d259d387d8dacfe196642361266f8.png

启动Kafka

kafka-server-start.bat config\server.properties

6470fa3625f6384fe412de41551daef9.png

启动ElasticSearch

启动下列工程:

  • LogCorner.EduSync.SignalR.Server

  • LogCorner.EduSync.Speech.Producer

  • LogCorner.EduSync.Speech.Consumer 启动下列工程:

    e79de7f21aec24ca85307008eaef1e48.png

  • LogCorner.EduSync.Speech.Presentationa5e52e300273262dbca6794ab3226b5d.png

启动Postman并且post一个新command 

a94c3a91de147b9c296c5105ea218947.png

你应该在消费者控制台上看到以下输出,使用postman上发布的命令

13797be7e2bd496928fd7d02b0b7cbab.png

代码源可在此处获得:

https://github.com/logcorner/LogCorner.EduSync.Speech.Command https://github.com/logcorner/LogCorner.EduSync.Speech.ServiceBus/tree/Feature/Task/IndexMessagesToElasticSearch

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

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

相关文章

惊呆了!这篇论文全文都是脏话,可编辑部居然对它评价极佳并发表了!

全世界只有3.14 % 的人关注了爆炸吧知识本文转自:募格学术你见过最奇奇怪怪的论文是什么?一教授为了抗议三流科学杂志发送垃圾邮件,回复了一篇全文只重复七个脏话字眼的论文,可没想到的是,它竟然还被 出!版…

单IP无TMG拓扑Lync Server 2013:前端服务器

在前面的基础架构和活动目录两篇文章中,我们已经准备好了Lync Server的所有环境。其实今天虽然部署的是Lync Server 2013的Preview版,但实际上与我们部署Lync的步骤以及规范是完全一样的,所以大家完全可以抛开Lync Server 2013 Preview版本本…

MySQL学习笔记之五:存储引擎和查询缓存

一、存储引擎1、InnoDB⑴InnoDB是基于聚簇索引建立的,基于主键索引查询时,性能较好;它的辅助索引中必须包含主键列;因此,若表上的索引较多,为节约空间,主键应尽可能小⑵InnoDB支持自适应hash索引…

利用SOS扩展库进入高阶.NET6程序的调试

有时候我们可能想深入到程序的运行核心,去观察下内存分配情况以及堆栈内保存的东东,那么作为编程新贵的底层框架.NET6,又为我们提供了什么可用的观测工具呢?1.SOS 扩展是什么?SOS扩展库是Windows 附带的调试扩展库&…

java--用 * 打印出各种图形(新手请进)

------------------------------------ 代码: public class PrintTriangle { public static void main(String[] args) { System.out.println("左边正三角形"); printTopLeft(5); System.out.println("左边倒三角形&quo…

这种动作片还需要汽车特效?

1 奇奇怪怪的扣分点又增加了▼2 就是活好!(素材来源网络,侵删)▼3 不愧是律师!(素材来源网络,侵删)▼4 成都马拉松惊现美食街!(素材来源网络,侵…

Android之支付宝设计与开发

背景 在移动支付领域,支付宝支付占用巨大份额,根据艾瑞咨询公布的报告数据:2014Q3,支付宝斩获了82.6%的市场份额,在移动支付的霸主地位越来越稳固。财付通支付的发力点在微信支付和手Q支付,在移动支付…

秘境探索之一个.NET 对象从内存分配到内存回收

前方高能预警,新手慎入!不听劝阻者,轻则郁闷堆积,重则生死看淡,对编程失去了念想,对生活失去了幻想!好了,心理强大到NB的可以忽略前方若干警示。为了探索.NET对象的内存分配和回收销…

这五部关于宇宙的神级纪录片,带你探索未知的外太空世界

宇宙之大无奇不有,在你的认知里你又知道多少关于宇宙的事情,如果单单用外星人概括你所对宇宙的认知就真的太片面了,小编今天就带来下面这四部关于宇宙的硬核纪录片,带你真正的去了解关于宇宙的知识,让你遨游在宇宙的知…

Exceptionless服务端+kibana部署实时日志纪要

安装软件列表Exceptionless.4.1.2861.zipelasticsearch-5.6.14.zipkibana-5.6.14-windows-x86.zip安装准备1. 在D盘下创建Exceptionless文件夹2. 拷贝需要安装的软件(参照上面安装软件列表)到Exceptionless文件夹下3. 安装JDK 1.8 (C环境中已经有安装, 步骤忽略)4. …

好心帮男朋友洗衣服,他却要分手??

1 每天一个分手小技巧(via.平民窟公主)▼2 导航最近的加油站(素材来源网络,侵删)▼3 单位停电发的蜡烛(via.蜻蜓队长)▼4 我也不知道原来有人这样穿啊!(素材来源网络&…

Android之如何解决右上角不显示3个点的菜单

之前写过小例子,发现菜单栏右上角的那3个点老是显示不出来,今天终于解决了,不废话,先爆照。 我之前的代码menu_main.xml 文件如下 <menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools&quo…

大型网站架构系列:电商网站架构案例

为什么80%的码农都做不了架构师&#xff1f;>>> #0 系列目录# 大型分布式网站架构大型分布式网站架构技术总结大型网站架构系列&#xff1a;电商网站架构案例#1 电商案例原因# 分布式大型网站&#xff0c;目前看主要有几类1.大型门户&#xff0c;比如网易&#xff…

八、结构模式之组合(Composite)模式

组合模式属于对象的结构模式&#xff0c;有时又叫做部分-整体模式&#xff0c;组合模式将对象组织到树结构中&#xff0c;可以用来描述整体与部分的联系。其可以使客户端将单纯元素和组合元素同等对待。 当需求中是体现部分与整体层次的结构时&#xff0c;以及你希望用户可以忽…

代言男科、站台微商、变身神棍....这些科学家被捧了几十年,黑历史曝光后,让人三观尽毁......

全世界只有3.14 % 的人关注了爆炸吧知识说到诺贝尔奖得主&#xff0c;尤其科学类奖项&#xff0c;吃瓜群众的感受常常是:不明觉厉。关于他们有多牛x的故事&#xff0c;你肯定听了不少。但你一定很少听过&#xff0c;诺奖得主转而研究伪科学&#xff0c;或者为了恰饭疯狂掉节操的…

拉屎能赚钱?在马桶上月入过万?原来卫生间里还有这么多隐藏福利,超模君都惊了……

全世界只有3.14 % 的人关注了爆炸吧知识模友们&#xff0c;你们有过“带薪拉屎”的经历吗&#xff1f;没错&#xff0c;假如我们每天花10分钟“带薪拉屎”&#xff0c;那一年大概能积攒下来40小时&#xff0c;假如我们每天工作8小时&#xff0c;等于多了5天年假&#xff0c;白嫖…

Android之让图片匀速旋转效果

图片匀速旋转 当我们更新的时候,需要把更新小图标旋转起来,不废话,先爆照 介绍动画: Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果;第二类是 Frame 动画,即顺序播放事先…

dotnet 使用 Infer# 自动分析代码缺陷

本文告诉大家如何使用 Infer# 开源库配合 GitHub 的 Action 实现自动分析代码缺陷&#xff0c;如找到可空引用或线程安全等问题这是一个在 GitHub 上完全开源的仓库&#xff0c;请看 https://github.com/microsoft/infersharp刚好今天收到了 Infer# 发布 1.2 版本博客&#xff…

发了篇paper,双非二本的她直博浙大

全世界只有3.14 % 的人关注了爆炸吧知识大家好&#xff0c;我是小南&#xff0c;本科就读于国内某双非二本院校&#xff0c;于2019年拿到了浙江大学的直博录取函。很多人问我从二本院校成功跨越到国内知名高校的秘诀是什么&#xff0c;我个人觉得&#xff0c;除开运气&#xff…