TimeoutInterceptor și Anularea Cererilor Lente în NestJS

pipeline NestJS 10.x / RxJS Q&A / Distribuie cod

Protejarea serverului împotriva blocajelor cauzate de microservicii sau interogări lente prin limitarea duratei maxime a cererii cu RxJS timeout().

Sintaxă
next.handle().pipe(timeout(5000), catchError(...))

Când un endpoint efectuează apeluri către baze de date supraîncărcate sau servicii terțe blocate, firul de execuție poate rămâne ocupat indefinit. TimeoutInterceptor impune o durată maximă permisă (de exemplu 5 secunde).

Dacă funcția nu returnează în acest interval, operatorul RxJS timeout() declanșează o eroare TimeoutError, interceptată și transformată într-un RequestTimeoutException (HTTP 408).

Exemplu: TimeoutInterceptor cu aruncare RequestTimeoutException
import { Injectable, NestInterceptor, ExecutionContext, CallHandler, RequestTimeoutException } from '@nestjs/common';
import { Observable, throwError, TimeoutError } from 'rxjs';
import { catchError, timeout } from 'rxjs/operators';

@Injectable()
export class TimeoutInterceptor implements NestInterceptor {
  intercept(context: ExecutionContext, next: CallHandler): Observable {
    return next.handle().pipe(
      timeout(5000), // Maxim 5 secunde
      catchError((err) => {
        if (err instanceof TimeoutError) {
          return throwError(() => new RequestTimeoutException('Timpul alocat cererii a expirat (5000ms)'));
        }
        return throwError(() => err);
      }),
    );
  }
}

Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: TimeoutInterceptor și Anularea Cererilor Lente

Ai o nelămurire despre utilizarea comenzii TimeoutInterceptor și Anularea Cererilor Lente sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.