Skip to content

victorhsr/Outbox-Pattern-Example

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

Outbox Patern - Implementação de exemplo

Este projeto apresenta uma implementação do outbox pattern, servindo de exemplo para o artigo publicado aqui.

Basicamente, temos:

  • Um producer, chamado user-api, escrito em java (Spring), ele que implementa de fato o outbox;
  • Um consumer, chamado recomendations escrito em javascript (Node.js);
  • Um message broker que utiliza o protocolo AMQP (RabbitMQ);

Utilização

Para iniciar a aplicação você irá precisar do Docker e Docker Compose devidamente instalados, e então, basta clonar o repositório e executar o comando :

docker-compose up

Para inciar o fluxo, basta realizar uma requisição POST para http://localhost:8081/api/v1/user com um JSON que segue a seguinte estrutura:

    {
        "name": "Victor Hugo",
        "email": "victor.hugo.origins@gmail.com",
        "password": "123123123",
        "gender": "MALE"
    }

Será cadastrado um usuário com estes dados, registrada a solicitação de disparo de notificação e eventualmente, um schedule service irá detectar as mensagens de notificação pendentes e irá publicá-las na queue user_created_q por meio do nosso message broker. A aplicação recomendations irá escutar as mensagens e exibir algumas informações sobre ela por meio do sistema de log.


Para uma explicação mais detalhada do que está acontecendo e o porque disto, recomendo a leitura do artigo originou esse trabalho. Boa leitura!