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

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于事件驱动架构构建微服务第14部分:查询API相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

投影读取模型 

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

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

Application

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

Infrastructure

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

Presentation

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

测试

启动ElasticSearch 

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

启动以下项目:

LogCorner.EduSync.Speech.Presentation

启动Postman并post新command

你应该会看到以下输出

代码源可在此处获得:

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

以上是关于基于事件驱动架构构建微服务第14部分:查询API的主要内容,如果未能解决你的问题,请参考以下文章

基于事件驱动架构构建微服务第15部分:SPA前端

基于事件驱动架构构建微服务第11部分:持续集成

基于事件驱动架构构建微服务第7部分:在仓储上实现事件溯源

基于事件驱动架构构建微服务第4部分:repositories

基于事件驱动架构构建微服务第9部分:处理更新

基于事件驱动架构构建微服务第12部分:向Apache KAFKA生成事件