you are giving some noun to different componentlike orchestrator (saga orchestrator ) this does n't tell that it is another service or progranm logic(like we have spring cloud) o it is a software like consul. So please clarify by giving example of the ochestrator or component
What do you mean by complete 'part of the transaction'. How a message which is supposed to listen by some other queue is listening by service B (Your cyclic dependency logic) . This can be the last statement in Interview. ClientRequest should go to some service and from there Msgbroker should come into the picture. If txn successful for service A then msg is sent on some topic which is listening by B .... Same for orchestrator as well client should not interact with orchestrator at first step
fantastic explanation , can u please make a video for demo of SAGA theoretically it's clear . but practially no. or u can give some link video which explain saga demo, thanks
Thank you for the lovely video,its just everyone is talking about theory can you please help us out with the code,i mean if you can show us small POC with spring boot and any db will be really appreciated.
as far as I know, the compensation transactions in SAGA should be idempotent and retriable. We have to design our comp transactions in a such a way that, even if the error occurs it has to perform retry (we can use circuit breaker design pattern b/w different microservices)
Yes. but the DB we choose should be very much fast so I can say Redis can be of great help here. Or we can go with in memory logging as well but in this case there will be compromise of data loss in case of system failure. Or we can write it in system files as well, as the log file is short term and as soon as transaction is complete we can process the log file data in any other DB and clean the files from the system.