fbpx
RabbitMQ Walkthrough v1
Publicado em: quinta-feira, 5 de ago de 2021
Tags:

RabbitMQ – Demonstração de Comportamento padrão com Mensageria.

Material complementar dos cursos:

Objetivo

1) Demonstrar comportamento padrão quando:

  • A) Temos uma carga de trabalho menor que nossa capacidade de processamento
  • B) Temos uma carga de trabalho igual à nossa capacidade de processamento
  • C) Temos uma carga de trabalho maior que nossa capacidade de processamento

2) Nesses casos:

  • A) Como as filas acumulam mensagens?
  • B) Como o tempo médio até o processamento é influenciado?
  • C) Como lidamos com escala?

3) Nesse exemplo conseguimos demonstrar:

  • A) Disponibilidade
  • B) Eficiência
  • C) Resiliência
  • D) Confiabilidade
  • C) Escalabilidade
  • E) Idempotência e porque precisamos dela, quando ela faz mais sentido em cenários assíncronos.

Decisões técnicas

Todas as decisões técnicas forma tomadas com base nos objetivos da aplicação. Tirar de contexto pode e provavelmente fará fazer com que você falhe. Copiar código para colocar em produção pode te custar muito caro, pois as decisões tomadas aqui tem função didática.

Sobre a discrepância entre Throughput solicitado vs Throughput real

As métricas de throughput foram criadas quando publisher e consumer não realizavam nenhuma tarefa que não fosse a iteração com o RabbitMQ. Dessa forma, como eles operavam em média em menos de 1 ms a até 3 ms, então era possível desprezar o tempo de processamento por mensagem. Com a adição do Banco de Dados, temos uma degradação variável que depende de:

  • Volume de mensagens no banco.
  • Quantidade de operações escritas simultâneas
  • Quantidade de operações leituras simultâneas

Dessa forma é quase impossível criar algo preciso sem implementar um algoritmo adaptativo. Na fase em que não tínhamos acesso a banco, tentei usar o RateLimiter, mas a discrepância entre o algoritmo de waiting que usávamos, versos a implementação de RateLimiter fez com que abandonássemos essa ideia naquela época. Tem um branch com essa implementação aqui no projeto. Mas ele data de uma outra versão. Talvez faça sentido voltar nele agora.

Sobre

Para maiores informações visite http://gago.io/ Mais informações sobre RabbitMQ http://gago.io/rabbitmq

Como usar

GIT Clone

Esse repositório está distribuído em diverso locais. Cada um com uma finalidade e evoluindo em direção independente.

Alunos RabbitMQ para Aplicações .NET

https://github.com/luizcarlosfaria-rabbitmq-masterclass/RabbitMQ-Walkthrough.git

Nosso foco aqui é entender RabbitMQ e seu uso.

Alunos Docker Definitivo / O Roadmap

https://github.com/docker-definitivo/RabbitMQ-Walkthrough.git

Nosso objetivo é entender RabbitMQ, entender algumas decisões arquiteturais e o motivo de algumas escolhas.

Do ponto de vista de docker, podemos ver como conseguimos montar stacks completas prontas para demonstração.

Do ponto de vista de arquitetura, conseguimos ver cenários onde usamos tecnologias especialistas para cada finalidade. Como o grafana para Visualização dos dados, enquanto usamos o RabbitMQ para mensageria e o SQL Server para persistência definitiva.

Comunidade

Uso geral de acordo com a licença.

O stack conta com quais componentes?

  • Web APP
    • .NET 5
    • Web
    • AngularJS
    • CSS: tailwindcss
    • API’s não autenticadas
  • SQL Server
    • Imagem customizada luizcarlosfaria/mssql-server-linux:2019-latest (saiba mais)
    • Automação padrão da imagem para criação de banco e usuários
    • Automação padrão da imagem para criação dos objetos de banco (tabelas)
  • RabbitMQ
    • Imagem: rabbitmq:3.9.1-management-alpine
    • Single Node
    • Pré configurado
      • Habilitada as métricas por objeto no prometheus
      • Habilitada a coleta de métricas a cada 1 segundo (antipattern para produção)
      • Habilitado modo de coleta de métricas detalhado (antipattern para produção)
      • Predefinição de usuário e virtual host defaults.
  • Grafana
    • Imagem: grafana/grafana:8.0.5-ubuntu
    • Single Node

Como usar:

 git clone {repourl}
 cd ./RabbitMQ-Walkthrough
 docker-compose pull
 docker-compose build
 docker-compose up

Execute no browser:

    Aplicação web:
    http://localhost:8877/
 
    Grafana:
    http://localhost:3000/d/mnwDaxWnz/gago-io-metricas?orgId=1&refresh=5s
 
    RabbitMQ
    http://localhost:15672/
    Usuário: WalkthroughUser
    Senha: WalkthroughPassword

No SSMS ou Azure Data Studio:
    Server: localhost,1433
    Authentication Type: SQL Login
    Username: WalkthroughUser
    Password: WalkthroughPass
    Database: Walkthrough

Demonstração no Youtube

Você pediu e agora virou curso. Mensageria .NET é minha formação de especialista em RabbitMQ com .NET, onde ensino RabbitMQ do básico, cada fundamento, cada detalhe, ao avançado.

Onde você vai sair do zero absoluto e vai conseguir criar, projetar e corrigir soluções .NET com RabbitMQ.

Além de contar mais 3 outros bonus incríveis para ajudar todos que precisam de um up na carreira.

RabbitMQ Newsletter

Novidades e ofertas de conteúdo exclusivo e único no Brasil.

Hoje com orgulho somos referência quando se fala em RabbitMQ com .NET.

São quase 10 anos usando RabbitMQ em projetos .NET com C#, implantando, convencendo times e mostrando o caminho para aslcançar sos 5 benefícios.

Após centenas de pedidos, criei um curso dedicado aos profissionais .NET. 

Aqui nessa newsletter eu te entrego promoções e links especiais! Cola aqui, tem muita coisa legal!

Luiz Carlos Faria

Meu primeiro contato com RabbitMQ foi em 2013.

Eu estava sozinho na definição de uma arquitetura para a reestruturação de uma integração enquanto meu time estava ocupado com o dia-a-dia.

Naquela época eu precisava de apenas 1 ou 2 recursos que o RabbitMQ entregava.

Nas primeiras semanas e meses em produção pude perceber coisas que não estavam escritas em lugar algum, benefícios e formas de uso das quais poderiam resolver anos de frustração.

Desde então RabbitMQ tem sido meu aliado na restruturação de projetos dos mais variados.

E por mais simples que seja, ainda é possível, 10 anos depois, gerar surpresas com novas abordagens que geram novos benefícios.

7 dias

É tudo que precisa para sair do zero, à produção!

Com conforto, com segurança, e com apoio.

Desde que você já seja um desenvolvedor profissional.

Se você quer entregar mais Disponibilidade, Eficiência, Resiliência, Confiabilidade e/ou Escalabilidade, em projetos .NET, aqui é o seu lugar.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.