Sto lavorando su un'applicazione distribuita e approfondisco le architetture basate su Event con Microservices. Diciamo che ho eseguito due microservizi, CustomerService
e AccountService
. Entrambi hanno un proprio database e si sono mantenuti sincronizzati con una messaggistica in stile evento con RabbitMQ.
Ad esempio, quando un nuovo utente viene creato in CustomerService
, un evento CustomerCreated
viene inviato a RabbitMQ. Il AccountService
ha un sottoscrittore che ascolta questo evento e crea immediatamente un account per questo utente.
Ora, diversi anni nel futuro, desidero avere un nuovo servizio, MusicListService
, che ogni volta che viene generato un nuovo evento CustomerCreated
, associare una playlist Musica a tale utente. Ovviamente gli utenti creati in precedenza devono avere anche una playlist vincolata a loro. Ma poiché questo servizio è nuovo di zecca, non ha ricevuto il passato CustomerCreated
degli anni precedenti, quindi nessuna playlist sarà vincolata per gli ex utenti a meno che non crei una sorta di script fuori banda che porta il database in uno stato corretto e aggiornato.
Quale sarebbe la migliore strategia di avvio per un nuovo Microservice in modo che rimanga sincronizzata con quelli già esistenti?