Kto powinien być odpowiedzialny za obsługę zdarzeń domeny? Usługi aplikacji, usługi domenowe lub same jednostki?W DDD, kto powinien być odpowiedzialny za obsługę zdarzeń domeny?
Użyjmy prostego przykładu dla tego pytania.
Załóżmy, że pracujemy nad aplikacją sklepu i mamy usługę aplikacji dedykowaną do operacji związanych z zamówieniami. W tej aplikacji Order
jest zbiorczą podstawową i następującą regułą, możemy pracować tylko z jednym agregatem w ramach pojedynczej transakcji. Po złożeniu zamówienia jest ono przechowywane w bazie danych. Ale jest jeszcze wiele do zrobienia. Przede wszystkim musimy zmienić liczbę pozycji dostępnych w ekwipunku, a po drugie powiadomić inną część systemu (prawdopodobnie inny ograniczony kontekst), że należy rozpocząć procedurę wysyłkową dla tego konkretnego zamówienia. Ponieważ, jak już wspomniano, możemy modyfikować tylko jeden agregat w ramach transakcji, myślę o opublikowaniu OrderPlacedEvent
, które będą obsługiwane przez niektóre komponenty w osobnych transakcjach.
Pojawia się pytanie: które elementy powinny obsługiwać tego typu zdarzenia?
Dzięki za odpowiedź. Jeśli chodzi o trwałość - nie wiem jeszcze jak to zorganizować. Sądzę, że najlepiej byłoby, gdybyśmy mieli dwie transakcje i pewną trwałą kolejkę (JMS?) - zdarzenie jest publikowane w ramach tej samej transakcji, a zatem zapewniamy, że zostało poprawnie dostarczone, a druga transakcja jest uruchamiana, gdy wiadomość jest odbierana z kolejki. W ten sposób możemy zapewnić, że jeśli coś pójdzie nie tak, wydarzenie zostanie ponownie dostarczone –