基于事件驱动架构构建微服务第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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 6新特性试用 | Nuget包
- 下一篇: WPF关键帧动画