コード例 #1
0
        public async Task EnviarPedido(CriarPedidoDto pedidoDto)
        {
            var config = new ProducerConfig {
                BootstrapServers = _config.BootstrapServers
            };

            //producer mais seguro
            config.Acks = _config.Acks;
            config.EnableIdempotence     = _config.EnableIdempotence;
            config.MessageSendMaxRetries = _config.MessageSendMaxRetries;
            config.MaxInFlight           = _config.MaxInFlight;

            //melhorar taxa de transferencia
            config.CompressionType = _config.CompressionType;
            config.LingerMs        = _config.LingerMs;
            config.BatchSize       = _config.BatchSizeKB * 1024;

            using var producer = new ProducerBuilder <int, string>(config).Build();
            try
            {
                var value = JsonConvert.SerializeObject(pedidoDto);

                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}]");
            }
        }
コード例 #2
0
        public async Task <IActionResult> Adicionar([FromBody] CriarPedidoDto pedidoDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values.Select(x => x.Errors)));
            }

            await _pedidoProducer.EnviarPedido(pedidoDto);

            return(Ok());
        }
コード例 #3
0
        public async Task <IActionResult> Adicionar([FromBody] CriarPedidoDto pedidoDto)
        {
            await _pedidoProducer.EnviarPedido(pedidoDto);

            return(Ok());
        }