iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
Software Development

當rust 遇上 cqrs & es 系列

試著利用rust在30天內實作cqrs及event sourcing

鐵人鍊成 | 共 30 篇文章 | 5 人訂閱 訂閱系列文 RSS系列文
DAY 1

D1 拉開序幕

前言 其實很久以前就聽過CQRS的名詞,一直以來只會CRUD的我,不了解如何實作,剛好看到最近的鐵人賽,想說可以透過這個機會,逼自己學習這個概念,預計接下來30...

2023-09-16 ‧ 由 Hell Kiki 分享
DAY 2

D2 Event Driven Design

事件驅動設計 既然是事件驅動設計,就試著使用事件來開始分析,以DDD來說,可以使用Event Storming來分析整個故事,不過我只有一個人,所以只好粗略地自...

2023-09-17 ‧ 由 Hell Kiki 分享
DAY 3

D3 實現基本資料結構(1)

初步分析要建立的資料結構: 2個主要的aggregate是「讀者」和「書籍」 5個領域事件為 「讀者」:「讀者已註冊」 「書籍」:「書籍已建檔」「書籍已入庫...

2023-09-18 ‧ 由 Hell Kiki 分享
DAY 4

D4 測試command to mem store

昨天完成了簡單 aggreagte實作,先試一下event store能不能work: use book_lib::aggregate::Aggregate;...

2023-09-19 ‧ 由 Hell Kiki 分享
DAY 5

D5 實現基本資料結構(2)

先前做Reader結構比較簡單,現在嘗試實作Book: 書籍 pub struct Book { pub id: String, pub tit...

2023-09-20 ‧ 由 Hell Kiki 分享
DAY 6

D6 測試event apply & rollback

ES裡 aggregate 的狀態由 events的紀錄所決定,所以要能夠從頭建立event,因此自帶audit log功能,若要進從不同時序的追蹤,使用sna...

2023-09-21 ‧ 由 Hell Kiki 分享
DAY 7

D7 ~~測試~~ 用 es 存放 book 事件

今天接續使用es,來試試多次book事件的commit是不是都可以正確的作用。 第一個指令:建立書籍檔案 let store = mem_store::MemS...

2023-09-22 ‧ 由 Hell Kiki 分享
DAY 8

D8 實現基本資料結構(3)

之前實作的reader有點不完整,調整一下 讀者 const MAX_BOOKS_PER_READER: usize = 5; #[derive(Debug,...

2023-09-23 ‧ 由 Hell Kiki 分享
DAY 9

D9 測試 reader event store

今天測一下昨天寫的redaer事件 先註冊使用者 let mut user = Reader::default(); let service = ReaderS...

2023-09-24 ‧ 由 Hell Kiki 分享
DAY 10

D10 處理2個aggregate

先前把reader和book拆為2個aggregate,但一個交易會同時影響2個aggregate。這邊試著用另一個function處理(domain serv...

2023-09-25 ‧ 由 Hell Kiki 分享