Frage

Dieser Artikel beschreibt ein großes Muster namens "Domain -Ereignisse": http://www.udidahan.com/2009/06/14/domain-events-salvation/

Ein großer Fehler mit diesem Muster wird jedoch in Kommentar 27 von Nutzern Andy hervorgehoben: Wenn eine Transaktion fehlschlägt, möchten wir nicht, dass unsere Domain -Ereignisse ausgeführt werden. Daher müssen wir einen Warteschlangenmechanismus erstellen.

Leider klingt dies so, als würde es eine Technik, die das System vereinfachen sollte, massiv erschweren.

Kennt jemand einige gute Beispiele oder Diskussionen über Warteschlangendomänenereignisse, insbesondere eine Lösung, die sich gut in Nhibernate integriert?

War es hilfreich?

Lösung

Ich habe herausgefunden, wie das geht: Das Geheimnis ist die Registersynchronisierungsmethode von Nhibernate's Itransaction.

Hier ist hier, wie ich eine E -Mail nur dann an einen Kunden senden kann, wenn die Transaktion begangen wird:

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

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

        NHibernateSessionManager
            .CurrentSession
            .Transaction
            .RegisterSynchronization(new SendEmailSynchronization(this.MailMessage));
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top