- ์ด๋ ํ๋ก์ธ์ค๊น์ง ๋ฌถ์ด์ผ ํ๋์ง ๋ค์ ๊ณ ๋ฏผํด๋ณด๊ธฐ
- ํธ๋์ญ์ ๋ฒ์๋ ์ ์ ํ๊ฐ?
- ์ด๋ค ํ๋ก์ธ์ค๋ ๋น๋๊ธฐ๋ก ํด๋ ๊ด์ฐฎ์๊ฐ?
- ๋ค๋ฅธ ์ด๋ฒคํธ ๋ฐฉ์๋ ์ ์ฉํ๊ธฐ
- DomainEvents
- ApplicationEventPublisher
- '๋ฐฐ์ก ์์'๋ ์ถ๊ฐํ๊ธฐ
- ์ด๊ฑด ๋จ์ ์ด๋ฒคํธ ์ ์ฉ์ด ์๋๋ผ ์ด๋ ์์ ์ ์ฒ๋ฆฌํด์ผ ํ๋์ง ๊ณ ๋ฏผํด๋ณด๊ธฐ
- ๋ ๋์๊ฐ์ ์ฌ๊ณ ์ฐจ๊ฐ, ๊ฐ๊ฒ์ ์ฃผ๋ฌธ ์๋ฆผ ๋ฑ ๋ค์ํ ์ํฉ๋ค ์๊ฐํด๋ณด๊ธฐ
- 1: 2024/08/09 00:29
sequenceDiagram
participant Client
participant OrderController
participant OrderService
participant Order
participant EventHandler
Client->>OrderController: POST /api/v1/orders
OrderController->>OrderService: placeOrder()
OrderService->>Order: new Order(userId)
Order-->>Order: registerEvent(OrderCreatedEvent)
OrderService-->>OrderController: ์๋ฃ
OrderController-->>Client: 200 OK
Note over Order,EventHandler: ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ
Order-)EventHandler: OrderCreatedEvent
EventHandler->>OrderService: payOrder(orderKey, userId, status)
OrderService->>Order: confirmed()
Order-->>Order: registerEvent(OrderCompletedEvent)
Order-)EventHandler: OrderCompletedEvent
EventHandler->>OrderService: completeOrder(order)
OrderService->>OrderService: ์ด๋ฉ์ผ ๋ฐ ์๋ฆผํก ์ ์ก ๋ก๊ทธ
\\\\\ output \\\\
2024-08-09T00:33:42.905+09:00 INFO 43031 --- [nio-8080-exec-1] c.t.d.order.application.OrderService : 1 ====== ์ฃผ๋ฌธ์ ์์ฑํฉ๋๋ค.
2024-08-09T00:33:42.953+09:00 INFO 43031 --- [ task-1] c.t.d.order.application.OrderService : 2 ====== ๊ฒฐ์ ๋ฅผ ์์ํฉ๋๋ค. ์ฃผ๋ฌธ ํค: 04dcd0ab-f69c-4736-acad-e63b9172cfc0, ์ฃผ๋ฌธ์ ์์ด๋: 1, ์ฃผ๋ฌธ ์ํ: ์ฃผ๋ฌธ ์ต์ด ์์ฑ
2024-08-09T00:33:43.005+09:00 INFO 43031 --- [ task-1] c.t.d.order.application.OrderService : 3 ====== ๊ฒฐ์ ๊ฐ ์๋ฃ๋์์ต๋๋ค.
2024-08-09T00:33:43.010+09:00 INFO 43031 --- [ task-2] c.t.d.order.application.OrderService : 4 ====== ์ฃผ๋ฌธ์ด ์๋ฃ๋์์ต๋๋ค. ์ฃผ๋ฌธ ์ํ: ๊ฒฐ์ ์๋ฃ
2024-08-09T00:33:43.010+09:00 INFO 43031 --- [ task-2] c.t.d.order.application.OrderService : 5 ====== ์ด๋ฉ์ผ ์ ์ก
2024-08-09T00:33:43.010+09:00 INFO 43031 --- [ task-2] c.t.d.order.application.OrderService : 5 ====== ์๋ฆผํก ์ ์ก