Domanda

Questo articolo descrive un grande modello chiamato 'dominio Eventi': http : //www.udidahan.com/2009/06/14/domain-events-salvation/

un problema principale con questo modello però è evidenziata in commento 27 dall'utente Andy: Se una transazione fallisce, noi non vogliamo che i nostri eventi dominio di eseguire. Pertanto, abbiamo bisogno di creare una sorta di accodamento meccanismo.

Purtroppo questo suona come sta andando a complicare in maniera massiccia una tecnica che avrebbe dovuto semplificare il sistema.

Qualcuno sa di alcuni esempi di buone o discussioni di accodamento eventi di dominio, una soluzione particolare che si integra bene con NHibernate?

È stato utile?

Soluzione

ho lavorato come fare questo: Il segreto è il metodo di RegisterSynchronization ITransaction di NHibernate

.

A titolo di esempio, ecco come potrei inviare una e-mail a un cliente solo quando la transazione è impegnata:

public class NotifyCustomerEmail
{
    private void MailMessage { get; set; }

    public void SendAsyncOnceTransactionCommits()
    {
        if (MailMessage == null)
            ComposeMailMessage();

        NHibernateSessionManager
            .CurrentSession
            .Transaction
            .RegisterSynchronization(new SendEmailSynchronization(this.MailMessage));
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top