基于事件驱动架构构建微服务第14部分:查询API

原文链接:https://logcorner.com/building-micro-services-through-event-driven-architecture-part14-query-api/

在本教程中,我将展示如何构建一个查询API,使用命令查询职责分离(CQRS)模式在微服务架构中实现查询。

读取模型的目标是构建一个专门用于读取的模型,通过对不同场景进行建模以将信息呈现给系统用户。

我无法查询事件流,因为它们不容易查询。出于性能原因,我也无法重建聚合的状态并在内存中查询它以获取用户的信息。

所以我将使用投影来创建事件的结构表示。这是通过预先计算聚合的当前状态并最终将其存储到no-sql数据库来完成的。我还可以根据最终用户的需要预先计算和存储信息以提高性能。

Streams已投影到ElasticSearch中,现在我必须构建视图以显示从无no-sql数据库中检索数据的查询。

投影读取模型 

我创建了一个应该被所有视图继承的基类Entity,它包含聚合的版本和聚合的标识符。

42548b4719d1e304b8a4c69aa06137fa.png

SpeechView包含我希望为最终用户显示的字段。

4400793ee3bf160318ac45c19c47ed0a.png

Application

SpeechUseCase使用从elasticsearch中检索数据并返回SpeechView(或列表)的存储库

88418aca61096259ae0fb99266d6b38c.png

Infrastructure

Infrastructure使用ElasticSearch客户端和Nest来执行搜索请求。

259545f37f7d7300b97ea208ea75f37b.png

Presentation

Presentation是一个web api coe程序,使用speechUseCase来搜索查询819e9f5b40528de105e3618efbaae1f7.png

测试

启动ElasticSearch 

启动浏览器并连接到 http://localhost:5601

00fba8b908074eb5a2d856e0d0e11427.png

启动以下项目:

LogCorner.EduSync.Speech.Presentation

启动Postman并post新command

你应该会看到以下输出

dd7223fae5d5624600a1358ff2dab00f.png

代码源可在此处获得:

https://github.com/logcorner/LogCorner.EduSync.Speech.Query

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

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

相关文章

​“北斗女神”徐颖,32岁成为中科院最年轻的博导!

全世界只有3.14 % 的人关注了爆炸吧知识来源:学术志被誉为“北斗女神”的徐颖研究员在32岁就成为了中科院最年轻的博士生导师,真是羡煞旁人。一分耕耘一分收获,我们要向为国家做出巨大贡献的科学家学习。徐颖、颜值、气质、才华、幽默集于一身…

通过jQuery源码学习javascript(三)

序承接上两篇继续写下去。我尽量把我明白的地方给大家说清楚。有些大家的提问我也有点搞不明白,如果有人能解答,再好不过了。疑问第一篇中有位博友提出了以下的问题,我也不太明白,如果有明白的,能否告知一、二。var st…

链表之单链表的反转总结

单链表的反转是常见的面试题目。本文总结了2种方法。 1 定义 单链表node的数据结构定义如下: class ListNode {int val;ListNode next;ListNode(int x) {val x;next null;} }2 方法1:就地反转法 2.1 思路 把当前链表的下一个节点pCur插入到头结点dummy…

封神!Win11内置杀软被评为免费最佳

微软 Windows Defender 预装在 Windows 10 和 Windows 11 操作系统上。根据最新报告显示:Windows Defender 是 2021 年最好的防病毒软件(杀毒软件)之一。近日,位于德国的 IT 安全研究机构 AV-TEST 发布了针对 Windows 10 操作系统…

redis协议

为什么80%的码农都做不了架构师?>>> 利用gdb调试redis-server 在客户端redsi-cli,输入 gdb在下面函数处打入断点: 执行read函数后,查看buf中的内容,如下: 可见,客户端发送的指令&am…

佛门重地,不适合搞这种事!!

1 快教教我!▼2 佛门重地,不适合搞这种事(素材来源网络,侵删)▼3 来自中国的圣诞老人(素材来源网络,侵删)▼4 有被内涵到,谢谢▼5 江山代有才人出(素材来…

Git之如何解决sourceTree已经pull全部下来但是本地没有更新的问题

今天用sourceTree好奇怪,我pull下来了同事的代码,但是本地项目没有,如下图 日志上面是显示已提交了同事的代码。 然后下面是本地的UserDao.java文件 死活也找不到 解决方法: 我先是从git 上面clone一份代码下来, 发现这…

WPF关键帧动画

动画与关键帧的区别本章介绍关键帧动画之前, 首先需要讲解一下关于WPF当中基础动画与本章所讲的关键帧动画的区别。视频地址: WPF扩展合集_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili普通动画WPF基础动画当中, 我们熟悉的From/To/By驱动的动画, 主要在两个值之间创建过渡效果, 如下图…

Mac怎么不能拷贝文件到U盘

2019独角兽企业重金招聘Python工程师标准>>> 在日常生活中,我们常常需要把一些文件拷贝的U盘保存。但是一些使用MAC的用户,有时会遇到无法拷贝的情况。今天我们就来给大家介绍介绍MAC怎么不能拷贝文件到U盘,以及面对这种情况我们应…

最漂亮的女生

转载于:https://blog.51cto.com/6254695/1071754

dockerfile文件名_Linux云计算教程全套视频合集:Dockerfile详解(一)

我们可以把刚才的对容器的所有操作命令都记录到一个文件里,就像写更脚本程序。之后用 docker build 命令以此文件为基础制作一个镜像,并会自动提交到本地仓库。这样的话镜像的构建会变的透明化,对镜像的维护起来也更加简单,只修改…

Android之放大镜实现的两种方式

public class ShaderView extends View {private final Bitmap bitmap;private final ShapeDrawable drawable;// 放大镜的半径private static final int RADIUS 80;// 放大倍数private static final int FACTOR 3;private final Matrix matrix new Matrix();public ShaderV…

他把数学书当小说看,初中没毕业却敢自荐中科大数学研究生,现在天才都这么狂妄了吗?...

全世界只有3.14 % 的人关注了爆炸吧知识他的脑子不太像人脑太聪明了今天,超模君来介绍一位看数学书像看小说一样的天才吧。他是初中没毕业,靠自学8年,便成为文 革后第一个被中科大破格录取的数学研究生。他只坚持做了10年数学研究&#xff0c…

微软RPA工具Power Automate Desktop

什么是RPARPA(机器人流程自动化)系统是一种应用程序,它通过模仿用户在电脑上的操作方法, 实现自动化操作流程,协助人在计算机、手机等计算设备中完成重复的工作流任务。Power Automate Desktop2021年3月2日,Microsoft终于宣布面向…

MS UC 2013-2-Deploy Microsoft Exchange Server 2013-4-Post-Installation Tasks

Blog:http://dynamic.blog.51cto.com MSN:LiuJinFengmsn.com QQ:316190099《MS UC 2013 -系列》博文:1) 以TechNet Library为技术资料原型。2) 以0-《统一沟通-微软-实战》为基础。3) 以1-《统一沟通-微软-技巧》为参照。4&#x…

作为一个程序员,进步完全取决于自己

2015-12-14 我曾经在Hacker News网站上读过一篇帖子的评论,其中一个年轻的程序员说他们不想呆在那些只会让思想陈旧的老程序员离开而不是对他们再次培训的公司里,因为他明白,有一天他们也会这样。 也许这个人的本意是好的,但是他…

如何优雅地向导师/老板表示:“上周工作没什么进展”?

全世界只有3.14 % 的人关注了爆炸吧知识学生时代最怕导师问进度实验数据有了吗?结论有了吗?社畜时最怕老板问进度客户签合同了吗方案改出来了吗重点从来都不是被问,而是没什么进展还要硬着头皮汇报应对这种情况小编总结了三句口诀:反客为主&…

Android之如果解决Android studio项目里面的类名不能重命名

问题:改类名修改不了 今天师傅要我给那个在activity里面不规范的类名,类名是SearchUser.改成SearchUserActivity,发现改不了出了一下问题,如下图 如何解决的: 点击下面的(85:56)行&#xff0c…

python葡萄酒数据集_利用python分析红葡萄酒数据

在本次分析中,我使用了随机森林回归,并涉及数据标准化和超参数调优。在这里,我使用随机森林分类器,对好酒和不太好的酒进行二元分类。首先导入数据包:importnumpy as npimportpandas as pdimportmatplotlib.pyplot as …

Codeforces 365C - Matrix(hash + yy)

题意:给定你一个数串s,再给你一个 a ,问你在矩阵d(第i,j个元素为si*sj)有多少个小矩形的和为a 解题思路:可知 a (s[x] s[x1] ....s[y])* (s[p]s[p1]....s[q]); 我们只需要枚举各字串的和…