Transaktion und Versand einer E-Mail

In Anbetracht der gemeinsamen Verwendung bei einem Benutzer das erstellen eines neuen Kontos auf eine web-Anwendung und die Anwendung Versendung einer Bestätigungs-E-Mail an die Adresse des Benutzers. Von dem, was ich gesehen habe, das ist in der Regel umgesetzt in eine von 3 Möglichkeiten:

  1. Der web-controller ruft eine service-Methode, die schafft das Benutzerkonto und sendet die E-Mail-sowohl innerhalb einer einzelnen Transaktion.
  2. Der web-controller ruft eine service-Methode (mit tx-Vermehrung = nie), die unter Berufung auf einen 1. Methode auf sich selbst, um das Benutzerkonto zu erstellen, die innerhalb einer Transaktion, und startet dann eine 2. Methode auf sich die E-Mail senden.
  3. Der web-controller ruft eine 1. service-Methode, die schafft das Benutzer-Konto innerhalb einer Transaktion, dann ein 2. service-Methode sendet die E-Mail.

Der 1. Ansatz ist einfach und unkompliziert, aber es gibt ein Risiko, dass die Transaktion ein Rollback ausgeführt wird, nachdem die email gesendet wurde, wodurch die E-Mail ungültig. Der 2. Ansatz ist komplizierter, aber es ist garantiert, dass die E-Mail wird nur gesendet, wenn der Benutzer die Schöpfung ist tatsächlich gelungen. Der 3. Ansatz ist einfach, aber zu Lasten der web-Schicht mit Geschäftslogik, sollte es nicht wissen müssen.

Gibt es nicht einen einfacheren Ansatz, vielleicht AOP-Gefahren, der gewährleistet, dass die E-Mail wird nur gesendet, wenn die Erstellung des Benutzers die Transaktion tatsächlich erfolgreich war? Bin ich paranoid zu denken, dass der 1. Ansatz scheitern könnte?

Verwenden wir Java EE + Spring stack und bereit sind, die Integration von weiteren APIs (AOP? Spring Integration?) um dies zu erreichen.

Prost!

InformationsquelleAutor Spiff | 2010-12-02
Schreibe einen Kommentar