17 lines
1.0 KiB
Plaintext
17 lines
1.0 KiB
Plaintext
$ mvn -pl saga test -Dtest=IdempotentConsumerTest
|
|
(the exact same ReserveInventoryCommand -- same commandId -- published twice by hand, to
|
|
simulate a redelivery; stock starts at 10, the command asks for 3)
|
|
|
|
ProcessedCommand rows for commandId f07ec35c-853c-4405-a024-b62d304dfabb: 1
|
|
Stock remaining for GADGET-DUP after two deliveries of the same command: 7
|
|
InventoryReply messages actually published: 1
|
|
reply: InventoryReply[commandId=f07ec35c-853c-4405-a024-b62d304dfabb, orderId=999, success=true, reason=null]
|
|
|
|
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
|
|
|
|
Two deliveries, one row in processed_commands, one actual reservation: 10 - 3 = 7, not 4. The
|
|
second delivery hit IdempotencyGuard.claim(), got false back because the UNIQUE constraint on
|
|
commandId rejected the second insert, and returned from the listener before calling
|
|
InventoryService.tryReserve() at all -- it never touched stock, and it never published a second
|
|
InventoryReply. Exactly one reply reached the topic for two deliveries of the same command.
|