Gdy migawki agregatów nie są zsynchronizowane z dziennikiem zdarzeń, mogę po prostu odtworzyć moje zdarzenia z wczesnych migawek (które powinny być zsynchronizowane). To samo mogę zrobić, dodając/usuwając nowe pola lub modyfikując logikę istniejących procedur obsługi.Jak radzić sobie z sytuacjami, gdy model odczytu nie był zsynchronizowany z dziennikami zdarzeń?
Jeśli potrzebuję dodać nowy model odczytu (np. Nowy widok raportu), mogę zrobić to samo jeszcze raz - powtórzę swoje zdarzenia.
Ale jak mam sobie radzić z sytuacją, gdy model odczytu nie jest zsynchronizowany z dziennikiem zdarzeń? Przechowywanie zdarzeń i publikowanie odbywa się w jednej transakcji, ale aktualizacja modelu odczytu wystąpiła w innej transakcji, która może się nie powieść. Powtarzanie wydarzeń od samego początku może pomóc, ale może trwać wieczność. Czy potrzebuję koncepcji migawek dla całego przeczytanego modelu?
Jak rozwiązać ten problem? Dziękuję.
Dziękuję Rinat! Czy w przypadku powtarzania zdarzeń od początku używasz jednego wątku programów obsługi zdarzeń? Ponieważ w przypadku, gdy użyję kilku wątków roboczych, otrzymam niepoprawne wyniki (podczas gdy będą działać w produkcji z powodu natury domenowej - stan wyścigu kilku zdarzeń nie jest możliwy podczas publikowania od prawdziwych użytkowników, ale możliwe podczas publikowania jeden po drugim dla kilku wątków roboczych). Czy na całym świecie przyznano, że powinniśmy używać tylko jednego wątku roboczego do przetwarzania zdarzeń od samego początku? Dziękuję za cenne odpowiedzi. –
Dobre połączenie. Wolę unikać takich problemów ze współbieżnością, zawsze uruchamiając nie więcej niż 1 wątek na instancję jednostki (polecenia lub zdarzenia). Możemy więc mieć wiele wątków dla procedur obsługi zdarzeń, jednak każda pojedyncza instancja * widok * (identyfikowana przez jakąś tożsamość) będzie zawsze obsługiwana tylko przez pojedynczy wątek. Oczywiście jeden wątek może obsłużyć więcej niż jedną instancję widoku lub typ na raz. czy to pomaga? –
Dziękujemy! Po kilku dniach analizy odpowiedzi myślę, że rozumiem mechanikę obsługi zdarzeń z wieloma wątkami roboczymi. Doceniam twoje odpowiedzi. –