• Stars
    star
    109
  • Rank 319,077 (Top 7 %)
  • Language
    CSS
  • License
    MIT License
  • Created over 3 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

RabbitMQ - Demonstração de Comportamento

image info

RabbitMQ-Walkthrough

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. Até as senhas e credenciais estão em hard code propositalmente, para que não sejam alteradas pois há dependências que não estão configuradas para rodar de forma diferente, como por exemplo a conexão com do Grafana com o SQL Server.

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/RabbitMQ-Walkthrough.git

Nosso foco aqui é entender RabbitMQ e seu uso.

Alunos Cloud Native .NET

https://github.com/cloudnative-net-br/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
      • Habilitando métricas por objeto no prometheus
      • Habilitando coleta de métricas a cada 1 segundo (antipattern para produção)
      • Habilitnado modo de coleta de métricas detalhado (antipattern para produção)
      • Definição de usuário e virtual host defaults.
  • Grafana

    • Imagem: grafana/grafana:8.0.5-ubuntu
    • Single Node
    • Pré configurado com Dashboard padrão para apresentar dados do SQL Server

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/

More Repositories

1

EnterpriseApplicationLog

Enterprise Application Log with RabbitMQ, LogStash, ElasticSearch and Kibana
Dockerfile
90
star
2

youtube-downloader

.NET Core + CI & CD + Jenkins
C#
77
star
3

eshop-cloudnative

Loja Virtual feita com .NET seguindo Cloud Native (Containers, Microservice, DevOps, Continuous Delivery), Cloud Agnostic, Hexagonal Architecture, Event Driven Architecture. Desenvolvido com .NET 6, usando Visual Studio e Docker, pronto para ser executado no kubernetes em produção.
Shell
57
star
4

CanalDotNet-MessageBroker

Canal .NET Message Broker com RabbitMQ
C#
46
star
5

Oragon.RabbitMQ

Opinionated and Simplified Minimal APIs for Resilient Consuming Messages from RabbitMQ, Ensuring No Crucial Configurations Are Hidden.
C#
34
star
6

TesseractOCRWebApi

OCR API com Tesseract encapsulada em uma Web API .NET Core
C#
33
star
7

generator-node-api-docker-1st-class-experience

NodeJS + Typescript + TSLint + Restify + MongoDB + Docker, With VS Code Automation = VSCode TypeScript Live Debug with Containers
JavaScript
22
star
8

eshop-cloudnative-architecture

C#
15
star
9

ocodigo-maio-2021

C#
15
star
10

nginx-pagespeed

Nginx + ngx_http_substitutions_filter_module + Google Page Speed + nginx-rtmp-module Dockerfile
Shell
14
star
11

Oragon.Common.RingBuffer

Ring / Circular Buffer with .NET Standard
C#
13
star
12

mssql-server-linux

Same mssql-server-linux with initialization like MySQL
Shell
12
star
13

echo-server

Echo Server - Para teste de Proxy Reverso e API Gateway
HTML
12
star
14

gRPC-Playground

gRPC demos
C#
9
star
15

eshop-cloudnative-catalog

e-Shop Cloud Native | Catalog | Projeto de e-Shop Cloud Native, Cloud Agnostic
HTML
7
star
16

DockerAZ-14-ASPNETCore

C#
7
star
17

Telegram-WatchDog

C#
7
star
18

kb

Base de Conhecimento Genérica
7
star
19

demo-rabbitmq-coding-night-lightning-talks

Demo de RabbitMQ no Coding Night Lightning Talks #1
C#
6
star
20

rabbitmq-featured

Featured RabbitMQ Docker Image
Dockerfile
5
star
21

groups

4
star
22

eshop-cloudnative-infra

e-Shop Cloud Native | Infra | Projeto de e-Shop Cloud Native, Cloud Agnostic
TypeScript
4
star
23

DevWeek2018-NHibernateDemo

DevWeek2018 - NHibernate no .NET Core - Visão Geral
C#
3
star
24

luizcarlosfaria

3
star
25

docker-definitivo-demo

Demonstração do Uso de Jenkins pipeline para build de aplicações .NET
C#
2
star
26

kubectl

kubectl como um container...
Dockerfile
2
star
27

RESTheart

The Web API for MongoDB - Premade Docker Compose Stack
2
star
28

jira

Dockenized Atlassian Jira
Dockerfile
2
star
29

MacaeTechWebApp

C#
2
star
30

JornadaDockerAZDemoDia3

Demo do dia 3 da Jornada
C#
1
star
31

MediatrVSDynamicProxy

C#
1
star
32

Hangout-NH-EF-DAPPER--demo-nh

C#
1
star
33

eshop-cloudnative-profile

e-Shop Cloud Native | Profile | Projeto de e-Shop Cloud Native, Cloud Agnostic
1
star
34

docker-diagram

Gerando diagramas com base em código
Python
1
star
35

nginx-pagespeed-automation

ASP
1
star
36

varnish

Varnish Cache Docker Image
Batchfile
1
star
37

TDCAcoesGRPC

C#
1
star
38

wordpress-apache-php7

Wordpress with PHP7 on apache
Shell
1
star