Jak wygląda implementacja tego wzorca oraz co można za jego pomocą osiągnąć?
Implementacji może być wiele. Osobiscie znam implementacje w JS to redux-saga a w C# framework MassTransit posiada takową. Saga pomaga w obsłudze długotrwałych procesów, odbiera i publikuje zdarzenia w danym procesie. Typowy przykład to skladanie zamówienia. W taki proces moze wchodzić kilka eventow. Np. Rezerwacja -> Płatność -> Potwierdzenie -> Dostarczenie -> Ocena zamowienia. Taki proces moze trwać sporo. Do tego saga moze reagować na zdarzenia niepowodzenia np gdy płatność sie nie powiedzie wycofać rezerwację produktu. Caly stan procesu jest zapisywany w jakiejś bazie danych.
Czyli to jest taki jakby UnitOfWork dla zdarzeń, który utrzymuje stan całego procesu i w zależności od wyniku zapisuje eventy do bazy ?
Może ktoś podesłać jakąś implementację w c# albo Java.
Tutaj masz przykład z opisem od Udiego (c# + nservicebus):
http://udidahan.com/2009/04/20/saga-persistence-and-event-driven-architectures/
a tutaj masa projektów bez opisu (c# + nservicebus):
https://github.com/Particular/docs.particular.net/tree/master/samples/saga
w dokumentacji nservicebus też jest sporo o implementacji:
https://docs.particular.net/nservicebus/sagas/
Super, dzięki.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.