示例#1
0
        public async Task <IActionResult> Create([FromBody] OperationDto operationDto)
        {
            var @event = new OperationCreatedEvent(operationDto.Value, operationDto.OperationType);
            await _operationService.SendOperation(@event);

            return(Ok());
        }
示例#2
0
        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}]");
            }
        }