Sobes.tech
Middle

Tarefa: São recebidos eventos de utilizadores, cada um precisa de ser verificado numa fonte externa, mas ela não responde de imediato. Implemente o VerificationService que: - Aceita eventos de utilizadores - Tenta verificar cada um contactando um serviço externo - Se a resposta for PENDING, tenta reenviar este evento não antes de 5 segundos - Máximo de 3 tentativas, após as quais o ID do evento é exibido no stdout com o estado FAILED - Os eventos processados com sucesso são exibidos no stdout com o estado VERIFIED Os modelos e os stubs das dependências externas já estão 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 }

Tarefa: São recebidos eventos de utilizadores, cada… - sobes.tech