RabbitMQ é simples e incrível. São apenas 4 componentes. Relativamente simples, mas cada um tem detalhes que escondem ouro.
Se você conhece estruturas de filas, pode pensar que já sabe do que se trata. E é aí que mora o engano. O RabbitMQ não é simplesmente uma infraestrutura de filas, é um Message Broker. Essa categoria exige que tenha habilidades que vão muito além de simplesmente possuir filas FIFO. Há detalhes que levariam semanas ou meses para implementar e anos para estabilizar, dependendo da linguagem.
Por isso defendo seu uso nos cenários mais variados.
Por volta de 2013 eu tive meu primeiro contato com o RabbitMQ, eu tinha uma demanda e precisava não só de escala. Na verdade minha demanda por escala era até pequena, mas minha demanda por controlar o processamento era muito maior. Foi quando parei para estudar as soluções disponíveis no mercado. RabbitMQ chegou aos finalistas do meu pipe de decisão. Quando parei para entender o que e como ele fazia me veio à cabeça: Eureka!
É incrível ver como uma ferramenta simples produz esse tipo de efeito.
Acredito que a grande dificuldade no entendimento do RabbitMQ e motivo de insucesso em diversas implantações que vi era a falta de conhecimento sobre o que o produto faz e falta de compreensão sobre como usar. Por exemplo: Quantas vezes eu vi gente reclamando que o RabbitMQ não estava distribuindo mensagens para todos os consumidores da fila.
Esse é um típico cenário previsível. Mas há inúmeros outros. Por exemplo, a entrega da mensagem é feita para cada consumidor, isso quer dizer que o rabbitmq nunca entregará a mesma mensagem para 2 consumidores ao mesmo tempo. Para que um segundo consumidor da mesma fila pegue essa mensagem, a mensagem precisa ter sido rejeitada pelo primeiro consumidor. Esse controle é por fila.
Já se você quer que 2 consumidores diferentes peguem a mesma mensagem, você OBRIGATORIAMENTE precisará de uma segunda fila.
Envio de mensagens para filas?
Alguns outros pontos geram certo desconforto. E um deles é o fato de você nunca enviar uma mensagem diretamente para uma fila.
Você envia mensagem para uma exchange, e de acordo com o TIPO DE EXCHANGE e seu bind (associação) para as filas, teremos o roteamento que fará a mensagem chegar a uma fila ou ser descartada entre a exchange e a fila.
Novamente quando se fala em descarte, bate um frio na espinha.
Mensageria com RabbitMQ
Em 19 de março de 2019 eu fiz uma live sobre RabbitMQ no Canal .NET. E vendo como a galera era novata no assunto, eu sugeri que fosse criado um grupo no telegram. O Braga criou o grupo RabitMQBR no mesmo dia. Me colocou na administração e desde então ajudo profissionais dos mais variados, das mais variadas tecnologias.
Mas antes disso eu já havia falado de RabbitMQ no canal .NET. Havia sido minha primeira live sobre Rabbit.
Message Broker & .Net Core – Introdução ao RabbitMQ
Mas como eu também torro a paciência de falar de conteúdo básico e introdutório, eu trouxe uma novidade, o ganho de 300 vezes (30 000%) na publicação de mensagens.
RabbitMQ + .NET Core: 100x FASTER
Todo dia chega gente nova na comunidade querendo conhecer algo que não conhecia, mas nessa live eu dediquei a falar de algo que eu estava trabalhando: Adequar os guidelines do RabbitMQ aos meus projetos.
E havia chegado a um resultado incrível na publicação de mensagens com o RabbitMQ. Foi absurdo! 100 vezes! Mas na live acabei alcançando 300 vezes mais performance, 300% em relação aos meus testes.
E foi incrível poder compartilhar como um pattern simples, como o RingBuffer me permitiu isso.
Mas além disso eu já havia publicado posts e mais posts falando de RabbitMQ e seus fundamentos.
Série de posts sobre RabbitMQ
Os 11 primeiros posts da série sobre RabbitMQ já estão no ar.
📍#1 Prefácio
https://gago.io/blog/rabbitmq-amqp-1-prefacio/
📍#2 Pra que mensageria?
https://gago.io/blog/rabbitmq-amqp-2-pra-que-mensageria/
📍#3 Conceitos
https://gago.io/blog/rabbitmq-amqp-3-conceitos/
📍#4 Perguntas e Respostas
https://gago.io/blog/rabbitmq-amqp-4-qna/
📍#5 Management UI, Filas e Exchanges
https://gago.io/blog/rabbitmq-amqp-5-management-ui-filas-e-exchanges/
📍#6 – Show me the code
https://gago.io/blog/rabbitmq-amqp-6-show-me-the-code/
📍#7 – Pipelines & Youtube Downloader
https://gago.io/blog/rabbitmq-amqp-7-pipelines-youtube-downloader/
📍 #8 – RabbitMQ & AMQP – Redis, um Message Broker?
https://gago.io/blog/rabbitmq-amqp-8-redis/
📍 #9 – Post Resposta: POR QUE ADOTAR KAFKA PARA MENSAGERIA?
https://gago.io/blog/post-resposta-por-que-adotar-kafka-para-mensageria/
📍 #10 – Como obtive 300 vezes mais performance na publicação de mensagens no RabbitMQ
https://gago.io/blog/ring-buffer-quase-um-uber/
📍 #11 – Como perder mensagens com RabbitMQ
https://gago.io/blog/como-perder-mensagens-com-rabbitmq/
E assim venho ajudando a comunidade de diversas formas.
Esse ano eu resolvi fazer uma MasterClass para mostrar RabbitMQ para Aplicações .NET que vai rolar nos dias 9 e 10 de Janeiro (sábado e domingo).
As inscrições vão até dia 7/JAN.
Mensageria em aplicações: quando, como e o que utilizar?
Além disso temos uma live marcada no dia 7/JAN. Nela vamos debater RabbitMQ e diversas outras plataformas.
E em breve tem mais conteúdo sobre RabbitMQ.
Olá, bom dia !
Estou buscando uma consultoria para projeto de monitoramento nas filas do RabbitMQ.
Você pode me indicar alguém que faça este tipo de trabalho ?
Me explica melhor o que você precisa em [email protected]