Giter Site home page Giter Site logo

talissonmelo / ms-rabbitmq-keyclock Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 958 KB

Arquitetura De Microservices, Serviços de Mensageria, RabbitMQ, Keycloak...

Java 99.26% Dockerfile 0.74%
eureka eureka-client eureka-discovery-service eureka-server spring-boot spring-web spring-webflux keycloak rabbitmq

ms-rabbitmq-keyclock's Introduction

Spring Boot Microservices, RabbitMQ e Keycloak.

Descrição do Projeto

Esse projeto tem como objetivo inicial demonstrar o uso das tecnologias Spring Boot, Spring Cloud, Docker, RabbitMQ, Eureka Discovery, Zuul Gateway, Spring Security, OAuth2, Keyclock, Spring Web, MySQL, Lombok, e Maven.

Informações relacionadas a IDE utilizada.

Neste projeto usei a IDE "IntelliJ" Versão: IntelliJ IDEA Community Edition 2022.1

Como replicar o projeto em meu ambiente de execução?

Faça o download do projeto e abra os microserviços na IDE "IntelliJ IDEA"

API Gateway

E uma aplicação que se registra no service registry, ela recebe uma notificação do cliente como por exemplo fazer um cadastro ou buscar um de cliente. A mesma verifica em qual microservice ela tem que ir atraves do service registry que vai passar o servidor, porta, caminho e o endereço IP do microservice desejado, e encaminha a requisição ao microservice de endpoint desejado.

API GATEWAY faz com que o cliente nao consiga acessar diretamente nenhum microservice.

exemplo

Service Discovery

O Service Discovery é um dos principais princípios da arquitetura baseada em microservices. Imagine que temos muitos serviços dinamicamente distribuídos na rede. Onde as instâncias de serviços mudam dinamicamente devido a escala automática, falhas, atualizações e não temos controle de endereços IP e nem o nome da instância.

O ideal nessa situação seria que o serviço comunica-se ao servidor ou até mesmo a algum serviço que poderia chamá-lo que está disponível para ser requisitado.

exemplo

Service Broker

O Service Broker fornece enfileiramento e mensagens confiáveis para as requisições e respostas a mesma ajuda os desenvolvedores a compor aplicativos de componentes independentes denominados serviços. Os aplicativos que exigem a funcionalidade exposta nesses serviços usam mensagens para interagir com os serviços.

O Service Broker usa TCP/IP para trocar mensagens entre instâncias. O Service Broker contém recursos para ajudar a impedir o acesso não autorizado da rede e para criptografar mensagens enviadas pela rede usa a comunicação assíncrona você envia a mensagem, caso o destinaria esteja indisponível o RabbitMQ guarda a mensagem e quando o service estiver disponível ele entrega a mensagem como no exemplo abaixo.

exemplo

RabbitMQ

O RabbitMQ é um software de enfileiramento de mensagens também conhecido como intermediário de mensagens ou gerenciador de filas.

Quando o usuário inserir informações do usuário na interface da web, o aplicativo da web criará uma mensagem que inclui todas as informações importantes que o usuário precisa em uma mensagem e a colocará em uma fila definida no RabbitMQ.

exemplo

Publisher -> Publica a mensagem.

Exchange -> Pega a mensagem, processa e encaminha para fila.

Queue -> Fila

Consumer -> Receptor da mensagem.

Fluxo de mensagens no RabbitMQ

exemplo

1 - O usuário envia uma solicitação de criação de mensagem (JSON) para o aplicativo da web.

2 - O aplicativo da web (o produtor) envia uma mensagem ao RabbitMQ que inclui dados da solicitação, como nome e e-mail.

3 - Uma troca aceita as mensagens do produtor e as encaminha para as filas de mensagens corretas para a entrega da mensagem.

4 - O consumidor recebe a mensagem e inicia o processamento da mesma.

Exchanges

exemplo

1- O produtor publica uma mensagem para uma troca. Ao criar uma troca, o tipo deve ser especificado.

2 - A exchange recebe a mensagem e agora é responsável pelo roteamento da mensagem. A troca leva em consideração diferentes atributos de mensagem, como a chave de roteamento, dependendo do tipo de troca.

3 - As ligações devem ser criadas da troca para as filas. Nesse caso, há duas ligações para duas filas diferentes da troca. A troca roteia a mensagem para as filas dependendo dos atributos da mensagem.

4 - As mensagens permanecem na fila até serem tratadas por um consumidor

5 - O consumidor manipula a mensagem.

Tipos de exchanges

exemplo

Direct: A mensagem é roteada para as filas cuja chave de ligação corresponde exatamente à chave de roteamento da mensagem.

Fanout: Uma troca de fanout roteia mensagens para todas as filas vinculadas a ela.

Topic: A troca de topic faz uma correspondência curinga entre a chave de roteamento e o padrão de roteamento especificado na ligação.

Direct

Envia expecificamente para uma fila.

exemplo

Fanout

Vai mandar esta mensagem para os que estão relacionadas a esta exchange (envia para todas).

exemplo

Topic

Adiciona regras (Dependente do Tipo da mensagem (routing key) mando para uma exchange).

exemplo

Headers

Menos utilizado (No Headers fica expecificado a fila para qual deve ser enviada).

exemplo

FIFO -> Primeira que entrou primeira que vai sair

Propriedades:

Durable ou não: Se ela deve ser salva mesmo depois do restart do broker

Auto-delete: Removida automaticamente quando o consumer se desconecta

Expiry: Define um tempo de espera para fila ou tempo que não há mensagens ou clientes consumindo a mesma

Message TTL: Tempo de vida da mensagem (Se ninguem consumila remove a mesma)

Overflow : Quando esta fila Transborda > Drop Head (remove a última e entra uma nova mensagem) > Reject publich (Fila lotada o publicador não consegue mais registrar na fila)

Exclusive: Somente channel que criou pode acessar

Max Length ou bytes: Quantidade de mensagens ou tamanho em bytes maximo permitido

Armazenar Mensagens em disco

http://tryrabbitmq.com/

ms-rabbitmq-keyclock's People

Contributors

talissonmelo avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.