Tecnologia e desenvolvimento

Tag: web

O que é HTTP?

Entenda o que é o protocolo HTTP que permite que as pessoas possam navegar na internet nos dias atuais.

A sigla HTTP significa: Hypertext Transfer Protocol, que basicamente possibilita que as pessoas posam inserir uma URL no navegador e então receber os dados trafegados na internet. Olhando de maneira mais simples, podemos dizer que é a comunicação entre uma URL e o servidor web que dispõe de uma resposta em relação a solicitação do usuário.

Os servidores web estão prontos para processar requisições desse tipo, logo o navegador que você está usando para acessar essa postagem tem essa característica, ou seja, para acessar esse site você solicitou o conteúdo ao servidor web pela URL do blog e então como resposta teve acesso a esse artigo.

Origem:

O termo nasceu em 1965, por Ted Nelson no Projeto Xanadu. Mas somente em 1995 Tim Berners-Lee e sua equipe realizou o cunho do que seria e é o HTTP em nossas vidas nos dias atuais. Em 1996 nascia a ideia do HTTP apenas com o método GET, ao longo dos anos e décadas a equipe de Tim melhorou o protocolo, criou novas regras e documentações.

O HTTP 1.1 foi atualizado em 1997, 199, 2007 e mais recentemente em 2014, destaque para a equipe que nasceu em 2007 para revisar e esclarecer o protocolo, formada por membros do HTTPbis.

Como funciona?

HTTP é um protocolo baseado em texto puro, que realiza processamento de informações de um lado de acordo com a resposta do servidor web. Digamos que você decide acessar um site, ao inserir a URL no navegador está solicitando ao servidor web daquela url o conteúdo do mesmo, como resposta você terá os dados do site, mas lembre-se que após a finalização dos dados existe uma desconexão onde o servidor web não está mais atrelado ao seu navegador, caso você queria ver outra página ou mesmo atualizar a atual terá que solicitar novamente um conteúdo via HTTP.

Abaixo um desenho da Mozilla sobre o conceito:

Diagrama de funcionamento do HTTP (Imagem: Reprodução/Mozilla)

Perceba que a internet está no meio do caminho entre o seu navegador e as diversas opções de servidores web do mercado. Isto porque a internet é apenas um meio fim para o conteúdo que consumimos diariamente, seja ele um site de noticias ou uma rede social.

Neste conceito, existe ainda o TCP/IP que é o conjunto de resposta que o servidor web devolve para a solicitação de uma URL. Logo, quando você abre um site pela URL, o sistema irá processar e receber através desse protocolo os dados e o IP contendo todo o conteúdo que será consumido.

Entenda que ao solicitar um conteúdo seu site deve estar preparado para oferecer a resposta de maneira rápida e eficiente, esse quesito envolve além de uma infraestrutura de qualidade, um site de qualidade que possa processar e consumir de mais rápida a resposta que o servidor web irá processar.

Em suma esse é o HTTP, neste artigo analisamos o que é esse protocolo e como ele processa informações diariamente em nossas vidas, dando a sensação de que estamos sempre nos comunicando entre grupo de amigos, mas na verdade estamos processando requisições em milhares de servidores webs e aguardando suas respostas.

Fontes:

Entenda o que é HTTP e o quão importante esse protocolo é para o seu site

Significado de HTTP

O que é HTTP

Usando RabbitMq com o plugin Mass Transit no .net 5 – Parte 2

Na primeira parte deste artigo criamos um producer capaz de enviar um produto para uma fila do RabbitMq usando o Mass Transit em .NET 5. Agora, vamos criar uma segunda aplicação que será responsável por consumir os dados enviados a essa fila.

Primeiro, é necessário que já tenhamos o docker rodando na máquina com a imagem do RabbitMq, caso não tenha essas informações, clique aqui e faça essa parte.

Após isso, vamos criar uma nova aplicação no Visual Studio 2019. Ela será igual a aplicação da parte 1.

Primeiro, vamos instalar os plugins:

  • Install-Package MassTransit -Version 7.2.1
  • Install-Package MassTransit.RabbitMQ -Version 7.2.1
  • Install-Package MassTransit.AspNetCore -Version 7.2.1

No Startup, vamos criar a configuração do RabbitMq:

services.AddMassTransit(cfg =>
{
     cfg.UsingRabbitMq((context, config) =>
     {
           config.Host("localhost", "/", h =>
           {
               h.Username("guest");
               h.Password("guest");
           });
         });
});

services.AddMassTransitHostedService();

Nesse passo, configuramos apenas os dados de acesso e host do RabbitMq. Precisamos criar o Consumer, que será responsável por consumir a fila e realizar alguma ação do nosso sistema. Vamos criar agora o ProductConsumer

public class ProductConsumer : IConsumer<Product>
    {
        private readonly ILogger<ProductConsumer> _logger;

        public ProductConsumer(ILogger<ProductConsumer> logger)
        {
            _logger = logger;
        }

        public Task Consume(ConsumeContext<Product> context)
        {
            try
            {
                var product = context.Message;
                product.DateUpdatePrice = DateTime.Now;
                _logger.LogInformation($"Product received: {product.Id}");
            }
            catch (Exception ex) { _logger.LogError("Error on try to consume product", ex); }
            return Task.CompletedTask;
        }
    }

Vamos analisar o que foi feito aqui. Primeiro, a classe criada herda de IConsumer, que é uma interface do Mass Transit. Ela será responsável por falar que as mensagens da fila são do objeto Product que criamos na aplicação de consumer. Neste ponto, precisamos criar a classe de Product nessa aplicação, mas detalhe ela precisa ter o mesmo namespace do outro projeto. Porque? O mass transit envia o arquivo com o namespace completo, logo se não tivermos o mesmo valor a mensagem irá se perder no RabbitMq.

Nossa Task Consume nada mais é do que um método que recebe uma mensagem ConsumeContext que tem um product enviado pelo Producer. Dentro do método podemos implementar nossa lógica de negócio, seja ela chamando outra aplicação ou até mesmo realizando um update no banco, fica a seu critério.

Após criar o nosso Consumer, precisamos voltar no Startup para inserir esse consumer no nosso ambiente:

 services.AddMassTransit(cfg =>
            {
                cfg.AddConsumer<ProductConsumer>();
                cfg.UsingRabbitMq((context, config) =>
                {
                    config.ReceiveEndpoint("product_queue", e =>
                    {
                        e.ConfigureConsumer<ProductConsumer>(context);
                    });

                    config.Host("localhost", "/", h =>
                    {
                        h.Username("guest");
                        h.Password("guest");
                    });
                });
});

Repare que criamos uma nova chamada para AddConsumer, informando nossa classe recém criada. Além disso, informamos o nome do Endpoint que está recebendo os dados e chamamos a classe de Consumer recebendo o context, que são as mensagens da Fila.

Pronto, temos nosso consumer pronto para receber os dados em tempo real. Essa solução atende a necessidade de criar um método assíncrono onde o usuário recebe algum produto, crédito ou até mesmo compra depois de um tempo.

Código completo no github: wenderdalber/MassTransit-RabbitMq-Consumer: A sample consumer queue RabbitMq using mass transit (github.com)

© 2025 Wender Dalber

Theme by Anders NorenUp ↑