Ejemplo n.º 1
0
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogInformation($"Ejecutando {this.GetType().Name}");

                var mensajes = _msjHelper.ListarNotificacionesPendientes();

                if (mensajes.Any())
                {
                    await _msjSender.Configurar();

                    foreach (var item in mensajes)
                    {
                        try
                        {
                            await _msjSender.Enviar(item);

                            // Cambia estado de la mensajería a E-ENVIADO
                            _msjHelper.CambiarEstadoMensajeria(TipoMensajeria.Push, item.IdNotificacion, EstadoMensajeria.Enviado, "OK");
                        }
                        catch (Exception e)
                        {
                            // Cambia estado de la mensajería a R-PROCESADO CON ERROR
                            _msjHelper.CambiarEstadoMensajeria(TipoMensajeria.Push, item.IdNotificacion, EstadoMensajeria.ProcesadoError, e.Message);
                        }
                    }

                    await _msjSender.Desconfigurar();
                }

                await Task.Delay(TimeSpan.FromSeconds(_configuration.GetValue <double>("MsjConfiguration:WorkerExecuteDelaySeconds")), stoppingToken);
            }
        }