public void Run() { _logger.Information("Recuperando login e senha"); string usuario = _configuration["user_login"]; string senha = _configuration["user_pass"]; _logger.Information("Testando o consumo de mensagens com Kafka"); var nomeTopic = _configuration["Kafka_Topic"]; _logger.Information($"Topic = {nomeTopic}"); try { var bootstrapServers = _configuration["Kafka_Broker"]; TopicTools.CreateTopicAsync(bootstrapServers, nomeTopic); } catch (Exception e) { _logger.Warning("Topic já existe"); } try { using var consumer = GetConsumerBuilder(); consumer.Subscribe(nomeTopic); try { while (true) { try { var cr = consumer.Consume(); var dados = cr.Message.Value; _logger.Information( $"Mensagem lida: {dados}"); var pedido = JsonSerializer.Deserialize <Pedido>(dados, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); var validationResult = new PedidoValidator().Validate(pedido); if (validationResult.IsValid) { var token = _deliveryExternalControl.Logar(new Auth() { Login = usuario, Senha = senha }); _deliveryExternalControl.EnviarPedido(pedido, token); _logger.Information("Ação registrada com sucesso!"); } else { _logger.Warning("Dados inválidos para a Ação"); } } catch (Exception e) { Console.WriteLine(e); _logger.Warning("Erro na fila"); } } } catch (OperationCanceledException) { consumer.Close(); _logger.Warning("Cancelada a execução do Consumer..."); } } catch (Exception ex) { _logger.Warning($"Exceção: {ex.GetType().FullName} | " + $"Mensagem: {ex.Message}"); } }
public void Run() { _logger.Information("Recuperando login e senha"); string usuario = _configuration["user_login"]; string senha = _configuration["user_pass"]; _logger.Information("Testando o consumo de mensagens com Kafka"); string nomeTopic = _configuration["Kafka_Topic"]; _logger.Information($"Topic = {nomeTopic}"); CancellationTokenSource cts = new CancellationTokenSource(); Console.CancelKeyPress += (_, e) => { e.Cancel = true; cts.Cancel(); }; try { using (var consumer = GetConsumerBuilder()) { consumer.Subscribe(nomeTopic); try { while (true) { var cr = consumer.Consume(cts.Token); string dados = cr.Message.Value; _logger.Information( $"Mensagem lida: {dados}"); var pedido = JsonSerializer.Deserialize <Pedido>(dados, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); var validationResult = new PedidoValidator().Validate(pedido); if (validationResult.IsValid) { var token = _deliveryExternalControl.Logar(new Auth() { Login = usuario, Senha = senha }); _deliveryExternalControl.EnviarPedido(pedido, token); _logger.Information("Ação registrada com sucesso!"); } else { _logger.Error("Dados inválidos para a Ação"); } } } catch (OperationCanceledException) { consumer.Close(); _logger.Warning("Cancelada a execução do Consumer..."); } } } catch (Exception ex) { _logger.Error($"Exceção: {ex.GetType().FullName} | " + $"Mensagem: {ex.Message}"); } }