Grâce à mon code java, je me connecte à plusieurs bases de données en utilisant la connexion pooling.if si ma base de données tombe en panne, je dois gérer la nouvelle tentative pour obtenir la connexion.retenter la logique jusqu'à ce que les bases de données apparaissent
0
A
Répondre
0
Si votre connexion db génère une sorte d'exception, vous pouvez simplement dormir un peu et réessayer l'opération.
Dans l'exemple ci-dessous travailleur est un objet qui fait un travail comme la connexion à un db, etc. Il est assez générique pour que vous puissiez recommencer toute sorte d'une opération telle que la lecture d'un fichier, etc.
Notez que attraper Throwable
n'est pas nécessairement une bonne idée.
boolean success = false;
int i = 0;
long delay = retryDelay;
LOGGER.info("Starting operation");
/*
* Loop until you cannot retry anymore or the operation completed successfully
* The catch block has a nested try catch to ensure that nothing goes wrong
* while trying to sleep
*
* In case of failure the last retry exception is propagated up to the calling
* class.
*/
while (i++ < retryMax && !success)
{
try
{
worker.work();
success = true;
}
catch (Throwable t)
{
try
{
LOGGER.warn("Caught throwable", t);
if (i == retryMax)
{
LOGGER.warn("Retry maximum reached, propagating error");
throw t;
}
if (retryPolicy == RetryPolicy.ESCALATING)
{
delay *= 2;
}
LOGGER.info("Sleeping for " + delay + " milliseconds");
Thread.sleep(delay);
}
catch (Throwable tt)
{
/*
* Quick check to see if the maximum has been hit, so we don't log twice
*
* t is the original error, and tt is the error we got while retrying
* tt would most likely be a InterruptedException or something
*/
if (i == retryMax)
{
throw t;
}
LOGGER.warn("Error while retrying, propagating original error up", tt);
throw t;
}
}
} // end retry loop
Avez-vous essayé quelque chose? – Gopi
vous devez fournir beaucoup plus de données. Quelles technologies utilisez-vous? Accès à la base de données via JDBC ou un ORM comme JPA, Hibernate, JDO, etc.? Quelle bibliothèque de connexion utilisez-vous? Utilisez-vous le printemps? etc. –