public static void Run([CosmosDBTrigger( databaseName: "DBAcoes", collectionName: "Transacoes", ConnectionStringSetting = "DBAcoesConnectionString", CreateLeaseCollectionIfNotExists = true, LeaseCollectionName = "leases")] IReadOnlyList <Document> input, ILogger log) { if (input != null && input.Count > 0) { foreach (var doc in input) { var transacao = AcoesRepository.GetTransacao(doc.Id); log.LogInformation($"Dados: {JsonSerializer.Serialize(transacao)}"); if (transacao.id.StartsWith("COMPRA")) { AcoesRepository.SaveCompra(transacao); log.LogInformation("Compra registrada com sucesso"); } else { AcoesRepository.SaveVenda(transacao); log.LogInformation("Venda registrada com sucesso"); } } } }
public static void Run([KafkaTrigger( "KafkaConnection", "topic-acoes", ConsumerGroup = "topic-acoes-mongo")] KafkaEventData <string> kafkaEvent, ILogger log) { string dados = kafkaEvent.Value.ToString(); log.LogInformation($"KafkaAcoesTopicTrigger - Dados: {dados}"); var acao = JsonSerializer.Deserialize <Acao>(dados, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); var validationResult = new AcaoValidator().Validate(acao); if (validationResult.IsValid) { log.LogInformation($"KafkaAcoesTopicTrigger - Dados pós formatação: {JsonSerializer.Serialize(acao)}"); AcoesRepository.Save(acao); log.LogInformation("KafkaAcoesTopicTrigger - Ação registrada com sucesso!"); } else { log.LogInformation("KafkaAcoesTopicTrigger - Dados inválidos para a Ação"); } }
public IEnumerable <AcaoDocument> Get( [FromServices] ILogger <AcoesMongoController> logger, [FromServices] AcoesRepository repository) { logger.LogInformation("Processando requisição HTTP GET em AcoesMongoController..."); return(repository.ListAll()); }
public static void Run([ServiceBusTrigger("topic-acoes", "FunctionAppAcoesSqlServer", Connection = "AzureServiceBusConnection")] string mySbMsg, ILogger log) { log.LogInformation($"AcoesServiceBusTopicTrigger - Dados: {mySbMsg}"); var acao = JsonSerializer.Deserialize <DadosAcao>(mySbMsg, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); var validationResult = new AcaoValidator().Validate(acao); if (validationResult.IsValid) { log.LogInformation($"AcoesServiceBusTopicTrigger - Dados pós formatação: {mySbMsg}"); AcoesRepository.Save(acao); log.LogInformation("AcoesServiceBusTopicTrigger - Ação registrada com sucesso!"); } else { log.LogInformation("AcoesServiceBusTopicTrigger - Dados inválidos para a Ação"); } }
public ConsoleApp(Logger logger, IConfiguration configuration, AcoesRepository repository) { _logger = logger; _configuration = configuration; _repository = repository; }
public static IActionResult Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("Function Transacoes - HTTP GET"); return(new OkObjectResult(AcoesRepository.GetAll())); }
public Worker(ILogger <Worker> logger, IConfiguration configuration, AcoesRepository repository) { _logger = logger; _configuration = configuration; _repository = repository; _consumer = KafkaExtensions.CreateConsumer(configuration); }
public AcoesController(IConfiguration configuration, ILogger <AcoesController> logger, AcoesRepository repository) { _configuration = configuration; _logger = logger; _repository = repository; }
public AcoesController(ILogger <AcoesController> logger, IConfiguration configuration, TelemetryConfiguration telemetryConfig, AcoesRepository repository) { _logger = logger; _configuration = configuration; _telemetryConfig = telemetryConfig; _repository = repository; }
public static IActionResult Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, ILogger log) { var listaAcoes = AcoesRepository.GetAll(); log.LogInformation( $"AcoesMongo HTTP trigger - número atual de lançamentos: {listaAcoes.Count()}"); return(new OkObjectResult(AcoesRepository.GetAll())); }
public Worker(ILogger <Worker> logger, IConfiguration configuration, AcoesRepository repository, TelemetryConfiguration telemetryConfig) { _logger = logger; _configuration = configuration; _repository = repository; _telemetryConfig = telemetryConfig; _queueName = _configuration["RabbitMQ:Queue"]; _intervaloMensagemWorkerAtivo = Convert.ToInt32(configuration["IntervaloMensagemWorkerAtivo"]); }
public Worker(ILogger <Worker> logger, IConfiguration configuration, AcoesRepository repository, TelemetryConfiguration telemetryConfig) { _logger = logger; _configuration = configuration; _repository = repository; _telemetryConfig = telemetryConfig; _consumer = new ConsumerBuilder <Ignore, string>( new ConsumerConfig() { BootstrapServers = _configuration["ApacheKafka:Broker"], GroupId = _configuration["ApacheKafka:GroupId"], AutoOffsetReset = AutoOffsetReset.Earliest }).Build(); }
public static IActionResult Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, ILogger log) { string codigo = req.Query["codigo"]; if (String.IsNullOrWhiteSpace(codigo)) { log.LogError( $"Acoes HTTP trigger - Codigo de Acao nao informado"); return(new BadRequestObjectResult(new { Sucesso = false, Mensagem = "Código de Ação não informado" })); } log.LogInformation($"Acoes HTTP trigger - codigo da Acao: {codigo}"); Acao acao = null; if (!String.IsNullOrWhiteSpace(codigo)) { acao = AcoesRepository.Get(codigo.ToUpper()); } if (acao != null) { log.LogInformation( $"Acoes HTTP trigger - Acao: {codigo} | Valor atual: {acao.Valor} | Ultima atualizacao: {acao.UltimaAtualizacao}"); return(new OkObjectResult(acao)); } else { log.LogError( $"Acoes HTTP trigger - Codigo de Acao nao encontrado: {codigo}"); return(new NotFoundObjectResult(new { Sucesso = false, Mensagem = $"Código de Ação não encontrado: {codigo}" })); } }
public static void Run([KafkaTrigger( "KafkaConnection", "topic-acoes", ConsumerGroup = "topic-acoes-docdb")] KafkaEventData <string> kafkaEvent, ILogger log) { string dados = kafkaEvent.Value.ToString(); log.LogInformation($"KafkaAcoesTopicTrigger 1 - Dados: {dados}"); var acao = JsonSerializer.Deserialize <Acao>(dados, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); var validationResult = new AcaoValidator().Validate(acao); if (validationResult.IsValid) { log.LogInformation($"KafkaAcoesTopicTrigger - Dados pós formatação: {JsonSerializer.Serialize(acao)}"); var eventTest = new KafkaEventData <string>(JsonSerializer.Serialize(acao)); try { AcoesRepository.Save(acao); } catch (System.Exception e) { throw e; } log.LogInformation("KafkaAcoesTopicTrigger - Ação registrada com sucesso!"); log.LogInformation("KafkaAcoesTopicTrigger - Executando próxima ação..."); KafkaAcoesTopicTrigger2.Run(eventTest, log); } else { log.LogInformation("KafkaAcoesTopicTrigger - Dados inválidos para a Ação"); } }
public static void Run( [RabbitMQTrigger("compra-acoes-queue", ConnectionStringSetting = "RabbitMQConnection")] string inputMessage, ILogger log) { log.LogInformation($"CompraAcoesRabbitMQTrigger - Dados: {inputMessage}"); Transacao transacao = null; try { transacao = JsonSerializer.Deserialize <Transacao>(inputMessage, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); } catch { log.LogInformation($"CompraAcoesRabbitMQTrigger - Erro durante a deserialização"); } if (transacao == null) { return; } var validationResult = new TransacoesValidator().Validate(transacao); if (validationResult.IsValid) { log.LogInformation($"CompraAcoesRabbitMQTrigger - Dados pós formatação: {JsonSerializer.Serialize(transacao)}"); AcoesRepository.Save <CompraAcaoDocument>(transacao); log.LogInformation("CompraAcoesRabbitMQTrigger - Transação registrada com sucesso!"); } else { log.LogInformation("CompraAcoesRabbitMQTrigger - Dados inválidos para a Transação"); } }
public static void Run([ServiceBusTrigger("topic-acoes", "redis", Connection = "AzureServiceBus")] string mySbMsg, ILogger log) { log.LogInformation($"AcoesServiceBusTopicTrigger - Dados: {mySbMsg}"); Acao acao = null; try { acao = JsonSerializer.Deserialize <Acao>(mySbMsg, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); } catch { log.LogError("AcoesServiceBusTopicTrigger - Erro durante a deserializacao!"); } if (acao != null) { var validationResult = new AcaoValidator().Validate(acao); if (validationResult.IsValid) { log.LogInformation($"AcoesServiceBusTopicTrigger - Dados pos formatacao: {JsonSerializer.Serialize(acao)}"); AcoesRepository.Save(acao); log.LogInformation("AcoesServiceBusTopicTrigger - Acao registrada com sucesso!"); } else { log.LogError("AcoesServiceBusTopicTrigger - Dados invalidos para a Acao"); foreach (var error in validationResult.Errors) { log.LogError($"AcoesServiceBusTopicTrigger - {error.ErrorMessage}"); } } } }
static void Main(string[] args) { Console.WriteLine("Carregando configurações..."); var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile($"appsettings.json"); var configuration = builder.Build(); var logger = new LoggerConfiguration() .WriteTo.Console() .CreateLogger(); logger.Information( "Testando o consumo de mensagens com Kafka + MongoDB"); string bootstrapServers = configuration["Kafka_Broker"]; string nomeTopic = configuration["Kafka_Topic"]; logger.Information($"BootstrapServers = {bootstrapServers}"); logger.Information($"Topic = {nomeTopic}"); var config = new ConsumerConfig { BootstrapServers = bootstrapServers, GroupId = $"{nomeTopic}-mongodb", AutoOffsetReset = AutoOffsetReset.Earliest }; CancellationTokenSource cts = new CancellationTokenSource(); Console.CancelKeyPress += (_, e) => { e.Cancel = true; cts.Cancel(); }; try { using (var consumer = new ConsumerBuilder <Ignore, string>(config).Build()) { consumer.Subscribe(nomeTopic); try { var repository = new AcoesRepository(configuration); while (true) { var cr = consumer.Consume(cts.Token); string dados = cr.Message.Value; logger.Information( $"Mensagem lida: {dados}"); var dadosAcao = JsonSerializer.Deserialize <DadosAcao>(dados, new JsonSerializerOptions() { PropertyNameCaseInsensitive = true }); var validationResult = new AcaoValidator().Validate(dadosAcao); if (validationResult.IsValid) { repository.Save(dadosAcao); 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}"); } }
public AcoesController(ILogger <AcoesController> logger, AcoesRepository repository) { _logger = logger; _repository = repository; }
public ControladorAcoesService(ILogger <ControladorAcoesService> logger, AcoesRepository repository) { _logger = logger; _repository = repository; }
public AcoesRedis(AcoesRepository repository) { _repository = repository; }
public AcoesMongoServiceBusTopicTrigger( AcoesRepository repository) { _repository = repository; }
public ProcessarAcoes(AcoesRepository repository) { _repository = repository; }
public static IActionResult Run( [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest req, ILogger log) { return(new OkObjectResult(AcoesRepository.ListVendas())); }
public ConsultaCotacoes(AcoesRepository repository) { _repository = repository; }
public AcoesMongo(AcoesRepository repository) { _repository = repository; }