private void CreateChannel(int index, CancellationToken stoppingToken, IModel channel)
        {
            var consumer = new EventingBasicConsumer(channel);

            consumer.Received += async(model, ea) =>
            {
                try
                {
                    var body    = ea.Body.ToArray();
                    var message = Encoding.UTF8.GetString(body);
                    logger.LogInformation($"Worker {index} recebeu o arquivo {message}");
                    var stopwatch = new Stopwatch();
                    stopwatch.Start();
                    await processaArquivoService.ProcessaArquivo(message, config.PathIn, config.PathOut);

                    stopwatch.Stop();

                    channel.BasicAck(ea.DeliveryTag, false);
                    logger.LogInformation($"Worker {index} processou o arquivo {message} em {stopwatch.Elapsed.TotalSeconds } segundos ");
                }
                catch (Exception ex)
                {
                    channel.BasicNack(ea.DeliveryTag, false, true);
                    logger.LogError(ex, nameof(AnaliseVendasRelatorioWorker));
                }
            };

            channel.BasicConsume(queue: config.QueueName,
                                 autoAck: false,
                                 consumer: consumer);
        }
Exemplo n.º 2
0
 public void DadoUmArquivoNoDiretorioEComDiretorioDeSaida(string arquivoNome, string pastaEntrada, string pastaSaida)
 {
     this.arquivoNome = arquivoNome;
     this.pastaSaida  = pastaSaida;
     servico.ProcessaArquivo(arquivoNome, pastaEntrada, pastaSaida);
 }