tenemos un objeto de datos cuyos atributos se distribuyen entre 3 partes,
Cuando se trata de actualizar los datos de ese objeto, no queremos dejar el objeto parcialmente actualizado. Entonces, si todas las partes están involucradas en la actualización, lo haremos
1 -> 2 -> 3
secuencialmente. Pero si la actualización es exitosa en el paso 1 y falla en el paso 2, entonces debemos revertir el paso 1; si los pasos 1 y 2 son exitosos y el paso 3 falla, entonces los pasos 1 y 2 deben revertirse. Esta es una aplicación spring boot 1.4, Java 8. ¿Hay alguna forma elegante de lograrlo programáticamente, en lugar de intentar/atrapar en los pasos 2 y 3?
Espero explicarlo bien. Cualquier ayuda/pista es muy apreciada
Hay patrones de integración que podría echar un vistazo, y bibliotecas que implementan estos patrones para usted, como Apache Camel, o productos patentados como Mule (creo que es costoso, probablemente nunca elegiría eso), o un flujo de gestión de procesos comerciales. , pero todas estas son decisiones de diseño que tendrá que tomar usted mismo. Puede estar perfectamente bien decidir no utilizar ninguno de estos enfoques más pesados. Hay mucho por ahí sobre integración, puede consultar ese campo tanto como necesite para encontrar una solución adecuada, pero no invertiría demasiado tiempo en eso, solo averigüe qué será lo suficientemente bueno.
Nota: es posible que encuentre material sobre transacciones distribuidas, y encontrará personas que creen en ellas, al igual que algunas personas creen en el conejo de Pascua cuando eran niños. No voy a decirles que no son reales (habiéndolo hecho en el pasado, he recibido votos negativos):), pero solo diré que todavía tengo que presenciarlos, y no espero hacerlo.
Si entendí bien, la primera y la segunda llamada están fuera de su alcance y no puede simplemente retroceder fácilmente como lo hace en una transacción DB. Puede aplicar un patrón de compensación para compensar lo que ya se actualizó.