Bawię się znowu w architekture heksagonalną i piszę coś w rodzaju forum / bloga / aplikacji społecznościowej. No i mam sobie przykładową domenę Post
, która jest odpowiedzialna za wszelkie CRUDowe operacje na postach. Dodatkowo, chcę powiadomić użytkowników gdy coś się stanie, np. :
- obserwowana osoba dodała nowego posta
- ktoś polubił mojego posta
- ktoś dodał komentarz do mojego posta
Wygląda mi to, na potrzebę stworzenia kolejnej domeny odpowiedzialnej za handling takich eventów, tzn. określenie faktycznej grupy odbiorców danego eventu oraz wypchnięcie do nich notyfikacji przez WebSocket i ewentualne zapisanie tego w bazie danych, jeżeli w danej chwili odbiorcy nie są online.
No i z punktu widzenia architektury heksagonalnej: (package per feature, package scoped)
- Czy taki serwis odpowiedzialny za notyfikację użytkowników do faktycznie kolejna domena czy część infrastruktury?
- Jak się komunikować z takim serwisem?
- Jeżeli to domena to po prostu dorzucać
NotificationFacade
to każdej innej domeny która może produkować różne eventy i wołać to synchronicznie? - Czy może Springowy
ApplicationEventPublisher
będzie tutaj idealnym rozwiązaniem? To mimo wszystko dość mały projekt, tak więc zdecydowałem że encje domenowe == encje biznesowe, tak więc i tak trochę Springa będzie wewnątrz domeny.
scibi92