@tc-libs/retry-policy
v4.6.0
Published
Package minimale per retry di transazioni MongoDB con backoff esponenziale.
Readme
@tc-libs/retry-policy
Package minimale per retry di transazioni MongoDB con backoff esponenziale.
Espone un solo servizio globale: RetryPolicyMongoService.
Quando usarlo
Usalo quando esegui una transazione Mongo che puo fallire con errori transienti come:
WriteConflictTransientTransactionErrorUnknownTransactionCommitResult
Uso
const session = await this.repo.startTransaction();
await this.retryPolicyMongoService.runInTransactionWithRetry(
session,
async (session) => {
await this.userRepository.updateOne({ _id: userId }, update, { session });
await this.auditRepository.create(payload, { session });
},
{
maxRetries: 5,
baseDelayMs: 50,
maxDelayMs: 2000,
jitter: true,
},
);Comportamento
- avvia la transazione se la sessione non e gia in transaction
- esegue
commitTransaction - se trova un errore retryable esegue
abortTransaction, aspetta il delay e riprova - rilancia l'errore quando il retry non e piu consentito
Modulo
Il modulo e globale:
import { RetryPolicyModule } from '@tc-libs/retry-policy';Non richiede configurazione.
Sviluppo
nx build retry-policy
nx test retry-policy