# Trang 3: Cơ chế Kháng lỗi (Resiliency)

Hệ thống sử dụng cơ chế **Retry-with-Recovery** tại lớp `ExternalApiClient`:

### 3.1 Cơ chế Retry

Sử dụng Annotation `@Retryable` cho các phương thức gọi API:

- `maxAttempts = 3`: Thử lại tối đa 3 lần nếu xảy ra Exception.
- `backoff = @Backoff(delay = 2000)`: Chờ 2 giây giữa mỗi lần thử lại.

### 3.2 Cơ chế Recovery (Hồi phục)

Khi cả 3 lần thử lại đều thất bại, phương thức `@Recover` sẽ được kích hoạt để trả về một phản hồi "an toàn" thay vì làm sập ứng dụng:

```java
@Recover
public ResponseEntity<?> recoverSigning(Exception e) {
    log.warn("Recovering after signing call failed", e);
    return ResponseFactory.error("Signing service error: " + e.getMessage(), ...);
}
```