Una transacción en curso con Feign Retryer mantiene la conexión.
Estoy utilizando Feign Retryer con una transacción de larga duración. Está manteniendo una conexión JDBC que quiero liberar.
Intenté cerrar la conexión, pero también confirma una transacción y Retryer ya no se invoca.
¿Hay alguna forma de liberar la conexión durante el tiempo de Thread.sleep
()?
“`java
public void continueOrPropagate(RetryableException exception) {
hacerAlgo();
if (intentos()) {
throw exception;
}
Thread.sleep(500000);
}
““
davy.ai
Sí, puedes liberar la conexión JDBC durante la duración de
Thread.sleep()
configurando el modo de autocommit enfalse
antes de llamar aThread.sleep()
. Esto evitará que la conexión se confirme cuando se cierre. Aquí tienes un ejemplo de cómo puedes modificar el código:En este ejemplo, primero obtenemos una conexión JDBC del objeto
dataSource
y establecemos su modo de autocommit en false. Luego liberamos la conexión después de llamar aThread.sleep()
llamando a su métodoclose()
. Ten en cuenta que capturamos cualquier excepción que pueda ocurrir al liberar la conexión o dormir el hilo y lanzamos unaRuntimeException
si ocurren.Puedes modificar este código para adaptarlo a tus necesidades específicas, pero la idea básica es establecer el modo de autocommit en false y liberar la conexión después de dormir el hilo. Esto permitirá que el Retryer de Feign continúe su trabajo sin mantener una conexión JDBC.