Chi dovrebbe essere responsabile della gestione degli eventi di dominio? Servizi applicativi, servizi di dominio o entità in sé?In DDD, chi dovrebbe essere responsabile della gestione degli eventi del dominio?
Facciamo un esempio semplice per questa domanda.
Diciamo che lavorare su applicazioni negozio, e abbiamo un servizio applicativo dedicato per ordinare operazioni. In questa applicazione Order
è una radice aggregata e le seguenti regole, possiamo lavorare solo con un aggregato all'interno di una singola transazione. Dopo che l'ordine è stato inserito, esso viene mantenuto in un database. Ma c'è ancora molto da fare. Prima di tutto, dobbiamo cambiare il numero di articoli disponibili nell'inventario e in secondo luogo notificare qualche altra parte di un sistema (probabilmente un altro contesto limitato) che dovrebbe essere avviata la procedura di spedizione per quell'ordine particolare. Perché, come già detto, possiamo modificare solo un aggregato all'interno della transazione, penso di pubblicare OrderPlacedEvent
che sarà gestito da alcuni componenti nelle transazioni separate.
La domanda sorge: quali componenti devono gestire questo tipo di evento?
Grazie per la risposta. Per quanto riguarda la durata - non so ancora come organizzarlo. Penso che idealmente dovremmo avere due transazioni e qualche coda duratura (JMS?) - l'evento è pubblicato all'interno della stessa transazione e quindi ci assicuriamo che sia stato consegnato correttamente e che l'altra transazione venga avviata quando il messaggio viene prelevato dalla coda. In questo modo possiamo assicurarci che se qualcosa va storto, l'evento verrà riconsegnato –