Գործառույթ: Օգտագործողներից ստացվող իրադարձությունները, յուրաքանչյուրն անհրաժեշտ է ստուգել արտաքին աղբյուրում, բայց դա անմիջապես պատասխան չի տալիս:
Իմպլեմենտացեք VerificationService, որը:
- Ստանում է իրադարձություններ օգտագործողներից
- Փորձում է ստուգել յուրաքանչյուրին կապվելով արտաքին ծառայության հետ
- Եթե պատասխանն է PENDING, կրկին ուղարկում է այս իրադարձությունը ոչ շուտ քան 5 վայրկյան
- Առավելագույնը 3 փորձ, հետո իրադարձության ID-ն արտածվում է stdout- ում FAILED կարգավիճակով
- Հաջողությամբ մշակված իրադարձությունները արտածվում են stdout- ում VERIFIED կարգավիճակով
Արտաքին կախվածությունների ձևանմուշներն ու սթաբները արդեն իրականացված են:
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
}