CQRS 架構中 一個事務生成的多個領域event 如何執行
CQRS 架構中 多個事務生成的領域event 誰先執行誰後執行?
https://github.com/banq/jdonframework/blob/master/example/cqrs%2Bes/match/src/main/java/sample/domain/Match.java
非同步框架,透過事件進行非同步化.
可能一個事務生成了一場比賽事件MatchStartedEvent1,還有其他實體的事件.比如每個人出場次數+1Event PersonEvent1;
另外一個事務生成了另外兩個事件. MatchStartedEvent2 ,PersonEvent2.
然後會處理這些事件,因為MatchStartedEvent1和PersonEvent1之前是屬於一個事務的, 那麼我的問題是執行兩個事件,把Match和Persion的變化持久化到資料庫.
.是否也是放在一個事務內執行?
如果不是,如何保證事務內操作的要麼全部回滾,要麼全部成功的特性
https://github.com/banq/jdonframework/blob/master/example/cqrs%2Bes/match/src/main/java/sample/domain/Match.java
@Model public class Match { private String id; private Date matchDate; private Team teams[] = new Team[2]; private boolean finished; @Inject public EventSourcing es; public void handle(MatchCreatedEvent matchCreatedEvent) { this.id = matchCreatedEvent.getMatchId(); this.teams[0] = new Team(matchCreatedEvent.getMatchTeamName1()); this.teams[1] = new Team(matchCreatedEvent.getMatchTeamName2()); this.finished = false; } public void startMatch(Date matchDate) { if (this.matchDate != null) System.err.print("the match has started"); es.started(new MatchStartedEvent(this.id, matchDate)); } public void handle(MatchStartedEvent event) { this.matchDate = event.getMatchDate(); } public void finishWithScore(Score score, Date matchDate) { if (this.matchDate == null) System.err.print("the match has not started"); if (finished) System.err.print("the match has finished"); es.finished(new MatchFinishedEvent(this.id, matchDate, score.getHomeGoals(), score.getAwayGoals())); } public void handle(MatchFinishedEvent event) { this.finished = true; } public String getId() { return id; } public String getHomeTeamName() { return teams[0].getName(); } public String getAwayTeamName() { return teams[1].getName(); } public boolean isFinished() { return finished; } } <p class="indent"> |
非同步框架,透過事件進行非同步化.
可能一個事務生成了一場比賽事件MatchStartedEvent1,還有其他實體的事件.比如每個人出場次數+1Event PersonEvent1;
另外一個事務生成了另外兩個事件. MatchStartedEvent2 ,PersonEvent2.
然後會處理這些事件,因為MatchStartedEvent1和PersonEvent1之前是屬於一個事務的, 那麼我的問題是執行兩個事件,把Match和Persion的變化持久化到資料庫.
.是否也是放在一個事務內執行?
如果不是,如何保證事務內操作的要麼全部回滾,要麼全部成功的特性
相關文章
- cqrs架構下的主鍵如何生成架構
- 請教一個事務+多執行緒 的問題執行緒
- 一條SQL如何被MySQL架構中的各個元件操作執行的?MySql架構元件
- IT綜合是IT行業中的一個重要領域行業
- 微服務領域的軟體架構微服務架構
- 【DDD/CQRS/微服務架構案例】在Ubuntu 14.04.4 LTS中執行WeText專案的服務端微服務架構Ubuntu服務端
- 領域驅動設計DDD和CQRS架構模式落地實踐架構模式
- 如何設計一個容錯的微服務架構微服務架構
- .NET遵循CQRS-ES架構的EventFlow的DDD + CQRS + Event-sourcing原始碼架構原始碼
- 在同一臺計算機中執行多個MySQL服務計算機MySql
- 如何快速搭建一個 “簡單模式” 的微服務架構模式微服務架構
- 如何用Nginx快速搭建一個安全的微服務架構Nginx微服務架構
- 【Java面試】如何中斷一個正在執行的執行緒?Java面試執行緒
- Java網際網路架構,如何快速搭建一個微服務架構?Java架構微服務
- 如何用Nginx搭建一個安全的、快速的微服務架構Nginx微服務架構
- 利用nodejs 執行多個js 指令碼,casperjs 同行執行多個任務NodeJS指令碼
- Java多執行緒——獲取多個執行緒任務執行完的時間Java執行緒
- 查詢某個會話正在執行的事務會話
- 如何產生一個C++區域性靜態物件的多執行緒問題C++物件執行緒
- 教你如何用Nginx搭建一個安全的、快速的微服務架構Nginx微服務架構
- Java多執行緒事務管理Java執行緒
- 使用 Terminator 在一個視窗中執行多個終端
- 金融領域微服務架構中如何實現分散式事務?如何記錄更多事件,儲存在哪裡?事件順序如何保證? - Revolut微服務架構分散式事件
- windows 系統下 workerman 在同一個執行視窗中開啟多個 websocket 服務WindowsWeb
- 請教:如何在一個htm頁面中執行一個BeanBean
- 我們該如何正確的中斷一個執行緒的執行??執行緒
- 如何成為一個架構師架構
- 同一個專案中的多個Spring Boot應用實現CQRS - itnextSpring Boot
- Java中一個物件在多執行緒中是共享的Java物件執行緒
- 在微服務架構中實施分散式事務鎖的幾個方案比較 - Prasanth Gullapalli微服務架構分散式
- 如何看待 Dapr、Layotto 這種多執行時架構?架構
- 一個多執行緒的PushbackInputStream問題執行緒
- 一個多業務、多狀態、多操作的交易鏈路,閒魚架構如何演進?架構
- 請教一個多執行緒的問題--wait多個鎖執行緒AI
- 如何做好一個系統架構師:抓住敏捷架構中幾個關鍵決策點架構敏捷
- C#多執行緒學習(二) 如何操縱一個執行緒C#執行緒
- C# 多執行緒學習(2) :如何操縱一個執行緒C#執行緒
- cqrs架構中,使用者登陸如何處理啊架構