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);
        }
Ejemplo n.º 2
0
        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;
            }
        }