Gast
#2667556
Hallo, tummeln sich hier ein paar JEE-Entwickler? Ich habe da eine grundsätzliche Frage: Wenn mein System auf Messages reagieren soll, nehme ich eine MDB. Nun kann es bei der Verarbeitung der Nachricht zu temporären Fehlern (Datenbank nicht da, oder ein benötigter Service nicht verfügbar) kommen, und auch zu permanenten (Nachricht enthält Schwachsinn). Die temporären Fehler möchte ich durch einen Retry lösen, also soll die Transaktion der MDB zurückgerollt werden. Die Nachrichten mit permanentem Fehler möchte ich verwerfen, also möchte ich die Transaktion committen. Problem bei den Nachrichten mit permanentem Fehler ist dann, dass trotz einem Commit nichts von der Nachricht im System verbleiben soll. Also mache ich es derzeit so, dass die MDB an eine StatelessSB delegiert, diese enthält alle Business Logik und rollt bei jedem Fehler die Transaktion zurück. Die MDB fängt die Exception und entscheided ihrerseits, ob sie ihre TX zurückrollt. Ist das eine gute Praxis? Wie macht ihr das in euren Projekten? Viele Grüße!