private Task SendMail(UsuarioRegistradoSendMailIntegrationEvent message) { using (IServiceScope scope = _serviceProvider.CreateScope()) { IEmailSender mailSender = scope.ServiceProvider.GetRequiredService <IEmailSender>(); mailSender.SendEmailAsync("*****@*****.**", "Teste", "Teste"); } Console.WriteLine(message.Email); return(Task.CompletedTask); }
private async Task <ResponseMessage> RegisterClient(RegisterRequest registerRequest) { ApplicationUser user = await _userManager.FindByEmailAsync(registerRequest.Email); UsuarioRegistradoIntegrationEvent registeredUser = new UsuarioRegistradoIntegrationEvent(Guid.NewGuid(), registerRequest.Name, registerRequest.Email, registerRequest.Cpf); UsuarioRegistradoSendMailIntegrationEvent registeredUserSendMail = new UsuarioRegistradoSendMailIntegrationEvent(Guid.NewGuid(), registerRequest.Name, registerRequest.Email, registerRequest.Cpf); try { RetryPolicy policy = Policy.Handle <Exception>() .WaitAndRetry(15, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (outcome, timespan, retryCount, context) => { Console.WriteLine($"Tentando pela {retryCount} vez!"); }); var result = await policy.Execute(async() => await _bus.RequestAsync <UsuarioRegistradoIntegrationEvent, ResponseMessage>(registeredUser)); if (result.ValidationResult.IsValid) { await policy.Execute(async() => await _bus.PublishAsync(registeredUserSendMail)); } return(result); } catch (Exception e) { await _userManager.DeleteAsync(user); throw; } }