Tarea: Se reciben eventos de los usuarios, cada uno necesita ser verificado en una fuente externa, pero no responde de inmediato.
Implementa VerificationService que:
- Acepta eventos de los usuarios
- Intenta verificar cada uno contactando a un servicio externo
- Si la respuesta es PENDING, reintenta enviar este evento no antes de 5 segundos
- Máximo 3 intentos, después de los cuales el ID del evento se imprime en stdout con estado FAILED
- Los eventos procesados con éxito se imprimen en stdout con estado VERIFIED
Las plantillas y los esqueletos de dependencias externas ya están implementados:
1. VerificationStatus
2. Event
3. VerificationResult
4. IExternalSource
public enum VerificationStatus { OK, Pending, Error }
public record Event(string Id, string Payload);
public record VerificationResult(VerificationStatus Status, string? Message = null);
public interface IExternalSource
{
VerificationResult Verify(string eventId);
}
public class VerificationService
{
private readonly IExternalSource _externalSource;
private const int MaxAttempts = 3;
private static readonly TimeSpan RetryDelay = TimeSpan.FromSeconds(5);
public VerificationService(IExternalSource externalSource)
{
_externalSource = externalSource;
}
// TODO: implement
}