Marco de transacciones distribuidas Uso de LCN, principio y lectura de código fuente

Sitio web oficial: https://www.codingapi.com/docs/home/

principio:

Ven al sitio web oficial
inserte la descripción de la imagen aquí

usar:

inserte la descripción de la imagen aquí
Un eureka.
Una TM y dos RM son servicio de pedido y servicio de pago respectivamente.
Para obtener una configuración detallada, visite el sitio web oficial.

Controlador de servicio de pedidos:

    @PostMapping("/add-order")
    @Transactional(rollbackFor = Exception.class)
    @LcnTransaction
    public String add(@RequestBody TblOrder bean){
    
    

        JSONObject date = new JSONObject();
        date.put("payName",bean.getOrderName()+"pay");

        restTemplate.postForEntity("http://lcn-pay/add-pay",date,String.class);
        int i = 1/0;
        tblOrderDao.insert(bean);
        return "新增订单成功";
    }

Controlador de servicios de pago:

    @PostMapping("/add-pay")
    @Transactional(rollbackFor = Exception.class)
    @LcnTransaction
    public String addPay(@RequestBody TblPay bean){
    
    
        tblPayDao.insert(bean);
//        int i = 1/0;
        return "新增支付成功";

    }

Simplemente agregue @LcnTransaction

código fuente

1 entrada:

Use la clase de aspecto aop para interceptar
TransactionAspect
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
para obtener mensajes de transacción:
inserte la descripción de la imagen aquí
Proceso de ejecución:
determine si hay un contexto de transacción,
obtenga el contexto principal si existe
inserte la descripción de la imagen aquí
, créelo si no,
y determine si es el iniciador de la transacción
Coloque la información de contexto en el caché,
haga clic en y será un Map<String, Object> singlePropCache ¿
inserte la descripción de la imagen aquí
Cuál es el marco general de startxx?
La mayoría de ellos tendrán
endXX
clearXX
cleanXX
destoryXX
Despliegue el código:
encuentre el método de destrucción
Después de la ejecución, elimine la información de contexto en finalmente
inserte la descripción de la imagen aquí
y obtenga la información de contexto, establezca un montón de parámetros, bla, bla, ingrese el punto clave:
inserte la descripción de la imagen aquí
DTXServiceExecutor # transactionRunning
inserte la descripción de la imagen aquí
Obtener el estado de propagación de la transacción
inserte la descripción de la imagen aquí
Iniciar la operación de transacción
previa a la ejecución previa El
iniciador de la transacción inicializa el grupo de transacciones
Los participantes de la transacción no ejecutan nada La
inserte la descripción de la imagen aquí
ejecución del negocio
es para ejecutar el contenido del método modificado por la anotación @LcnTransaction
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
La ejecución se completó correctamente:
inserte la descripción de la imagen aquí
iniciador de la transacción:
establecer el estado en 1
inserte la descripción de la imagen aquí
participante de la transacción:
unirse al grupo de transacciones
inserte la descripción de la imagen aquí
Ejecución fallida:
iniciador de la transacción:
establezca el estado en 0
inserte la descripción de la imagen aquí
participante de la transacción:
elimine la información de la transacción
inserte la descripción de la imagen aquí
Ejecución completada:
notifique a TM
inserte la descripción de la imagen aquí
para que haga clic dentro:
inserte la descripción de la imagen aquí

2 ¿Cómo obtiene LCN la conexión a la base de datos de operaciones?

DataSourceAspect
intercepta al adquirir conexiones de base de datos:
inserte la descripción de la imagen aquí
realice proxy y empaquete conexiones de base de datos de diferentes tipos de transacciones usted mismo. Tome
inserte la descripción de la imagen aquí
LCN como ejemplo:
devuelva sus propios datos y conecte la clase de proxy:
inserte la descripción de la imagen aquí
realice su propio procesamiento . El proceso general es
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
casi así .
Echemos un vistazo al modo TCC nuevamente.
Si está interesado, pueden discutirlo juntos.

Supongo que te gusta

Origin blog.csdn.net/lx9876lx/article/details/121197022
Recomendado
Clasificación