基于事件驱动架构构建微服务第14部分:查询API
原文鏈接:https://logcorner.com/building-micro-services-through-event-driven-architecture-part14-query-api/
在本教程中,我將展示如何構(gòu)建一個查詢API,使用命令查詢職責分離(CQRS)模式在微服務架構(gòu)中實現(xiàn)查詢。
讀取模型的目標是構(gòu)建一個專門用于讀取的模型,通過對不同場景進行建模以將信息呈現(xiàn)給系統(tǒng)用戶。
我無法查詢事件流,因為它們不容易查詢。出于性能原因,我也無法重建聚合的狀態(tài)并在內(nèi)存中查詢它以獲取用戶的信息。
所以我將使用投影來創(chuàng)建事件的結(jié)構(gòu)表示。這是通過預先計算聚合的當前狀態(tài)并最終將其存儲到no-sql數(shù)據(jù)庫來完成的。我還可以根據(jù)最終用戶的需要預先計算和存儲信息以提高性能。
Streams已投影到ElasticSearch中,現(xiàn)在我必須構(gòu)建視圖以顯示從無no-sql數(shù)據(jù)庫中檢索數(shù)據(jù)的查詢。
投影讀取模型?
我創(chuàng)建了一個應該被所有視圖繼承的基類Entity,它包含聚合的版本和聚合的標識符。
SpeechView包含我希望為最終用戶顯示的字段。
Application
SpeechUseCase使用從elasticsearch中檢索數(shù)據(jù)并返回SpeechView(或列表)的存儲庫
Infrastructure
Infrastructure使用ElasticSearch客戶端和Nest來執(zhí)行搜索請求。
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
總結(jié)
以上是生活随笔為你收集整理的基于事件驱动架构构建微服务第14部分:查询API的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 6新特性试用 | Nuget包
- 下一篇: 微软RPA工具Power Automat