Zdarzenia CQRS nie zawierają szczegółów potrzebnych do aktualizacji modelu odczytu

Jest jedna rzecz w CQRS, której nie dostaję: Jak zaktualizować odczytany model, gdy podniesione zdarzenie nie zawiera szczegółów potrzebnych do aktualizacji modelu odczytu.

Niestety, jest to dość powszechny scenariusz.

Przykład: dodaję użytkownika do grupy, więc wysyłam polecenie addUserToGroup (userId, groupId). Jest to odbierane, obsługiwane przez program obsługi komend, zdarzenie userAddedToGroup jest tworzone, przechowywane i publikowane.

Teraz obsługa zdarzeń odbiera to zdarzenie i oba identyfikatory. Teraz pojawi się widok, który wyświetli listę wszystkich użytkowników z nazwami grup, w których się znajdują. Aby zaktualizować model odczytu dla tego widoku, potrzebujemy identyfikatora użytkownika (który mamy) i nazwy grupy (której nie mamy) Mamy, mamy tylko jego identyfikator).

Więc pytanie brzmi: jak radzić sobie z tym scenariuszem?

Obecnie przychodzą mi do głowy cztery opcje, wszystkie z ich specyficznymi wadami:

Model odczytu pyta domenę. => Zabronione, a nawet niemożliwe, ponieważ domena ma tylko zachowanie, nie ma stanu (publicznego).

Model odczytu odczytuje nazwę grupy z innej tabeli w modelu odczytu. => Działa, ale co jeśli nie ma pasującej tabeli?

Dodaj niezbędne dane do wydarzenia. => Nie działa, ponieważ oznacza to, że musiałem zaktualizować wszystkie poprzednie wydarzenia, i nie mogę przewidzieć, które dane będę potrzebować pewnego dnia.

Nie obsługuj zdarzenia za pomocą „zwykłej” procedury obsługi zdarzeń, ale uruchom proces ETL w tle, który zajmuje się składnicą zdarzeń, tworzy niezbędne dane i zapisuje odczytany model. => Działa, ale dla mnie wydaje się to trochę zbyt dużym obciążeniem dla tak prostego scenariusza.

Tak więc pytanie brzmi: jak prawidłowo radzić sobie z tym scenariuszem?

questionAnswers(3)

yourAnswerToTheQuestion