Add the saga module: Saga Pattern in Spring Boot, orchestration vs choreography with Kafka
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
$ mvn -pl saga test -Dtest=OrchestrationSagaTest
|
||||
(the same two scenarios -- enough stock, and not enough stock -- run through
|
||||
OrderSagaOrchestrator instead of through independent listeners)
|
||||
|
||||
[happy path] Order 1 status: CONFIRMED
|
||||
[happy path] Stock remaining for GADGET-ORCH-OK: 8
|
||||
[happy path] Payment record status: RESERVED
|
||||
[compensation] Order 2 status: CANCELLED
|
||||
[compensation] Stock remaining for GADGET-ORCH-FAIL (untouched): 1
|
||||
[compensation] Payment record status: REFUNDED
|
||||
|
||||
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
|
||||
|
||||
Same outcomes as the choreography transcripts, reached a structurally different way. Here,
|
||||
PaymentOrchestrationHandler and InventoryOrchestrationHandler never decide what happens next --
|
||||
they carry out exactly one command each and reply. OrderSagaOrchestrator is the only class that
|
||||
reads a reply and decides what command to send next, including the decision, in the second
|
||||
test, to send RefundPaymentCommand once InventoryReply says no. Compare this transcript's two
|
||||
tests with the two choreography transcripts above: identical business outcomes, from listener
|
||||
classes that know nothing about the saga as a whole versus one class that knows all of it.
|
||||
Reference in New Issue
Block a user