public async Task <IActionResult> Create([FromBody] OperationDto operationDto) { var @event = new OperationCreatedEvent(operationDto.Value, operationDto.OperationType); await _operationService.SendOperation(@event); return(Ok()); }
public async Task SendOperation(OperationCreatedEvent @event) { var config = new ProducerConfig { BootstrapServers = _config.BootstrapServers }; //producer mais seguro config.Acks = _config.Acks; config.EnableIdempotence = _config.EnableIdempotence; //melhorar taxa de transferencia config.LingerMs = _config.LingerMs; config.BatchSize = _config.BatchSizeKB * 1024; using var producer = new ProducerBuilder <int, string>(config).Build(); try { var value = JsonConvert.SerializeObject(@event); await producer.ProduceAsync( _config.Topic, new Message <int, string> { Key = new Random().Next(0, 2), Value = value }); } catch (ProduceException <int, string> e) { Console.WriteLine($"Falha ao entregar a mensagem: {e.Message} [{e.Error.Code}]"); } }