iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
Software Development

事件驅動電力交易平台:Spring Boot 實戰系列 第 10

Day 10|把「核定完成」送去撮合:OrderCreatedEvent 的語意與落點

  • 分享至 

  • xImage
  •  

今天專講 OrderCreatedEvent 本人:它為什麼是「可撮合」的門票?怎麼保證它送得正確?

1.欄位與語意

在 Wallet 端用 builder 把 orderId/userId/price/quantity/type/createdAt 組成事件,再送到 order.exchange 的 order.created:
這些欄位對撮合來說是「最低必要」資訊:

  • orderId:唯一追蹤
  • userId:錢包/風控對應
  • price/quantity:撮合核心
  • type:BUY/SELL
  • createdAt:時序與觀測

2.誰會訂閱?

Match Engine(之後的篇)會訂閱 order.created,將訂單放入 OrderBook(例如 Redis)進行撮合;Order Service 同樣會訂閱order.created來更新訂單資訊讓前端知道這筆訂單已進入訂單簿,本篇先交代語意與落點,後續再說明接受到created event會發生什麼。

3. 我如何「驗證」它真的送對了?

在前幾天已用 Spring Cloud Contract 驗證 Wallet 端會正確送出 order.created:

  • 契約 YAML:sentTo: order.exchange、rabbitmq_routingKey: order.created,payload 欄位全部列出。
  • 測試會從 order.exchange 渠道收訊息並逐欄位比對,確保 routing key 與 JSON 結構相符。
    這讓我們很有信心:Wallet 的「核定完成」訊號是可機器驗證的,不用人眼查 log。

4.小結

OrderCreatedEvent 是撮合的唯一入口。藉由契約測試,已經把它的結構與路由固定下來,後續媒合服務接入就會順暢許多。


上一篇
Day 9|Wallet Consumer :資產驗證與鎖定的交易邏輯
下一篇
Day 11|查得見的進度:Order Service 的訂單狀態追蹤
系列文
事件驅動電力交易平台:Spring Boot 實戰12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言