Este projeto é um exemplo de aplicação de microserviço utilizando RabbitMQ como serviço de fila. Ele foi desenvolvido em TypeScript e consiste em dois microserviços: "payment" 💰 e "ticket" 🎟️. Esses microserviços interagem por meio de eventos e filas, demonstrando um cenário comum em arquiteturas de microsserviços.
Antes de começar, verifique se você possui os seguintes requisitos instalados em seu ambiente de desenvolvimento:
- Node.js (versão 18.x ou superior) 🚀
- Yarn Package Manager 📦
- RabbitMQ (servidor de fila) 🐇
Siga as etapas abaixo para configurar e executar o projeto em seu ambiente local.
-
Clone o repositório para o seu diretório de preferência:
git clone https://github.com/kelwinv/microservices-with-RabbitMQ
-
Acesse o diretório do projeto:
cd microservices-with-RabbitMQ
-
Instale as dependências do projeto:
yarn install
-
Configuração do PostgreSQL:
- Certifique-se de que o PostgreSQL esteja instalado e em execução no seu ambiente.
- Verifique se as configurações de conexão com o PostgreSQL estão corretas nos arquivos dentro de
src/repository
dos diretóriospayment
eticket
. - Por padrão, os servidores estão esperando uma conexão com o PostgreSQL na rota
postgres://postgres:docker@localhost:5432/app
. - Certifique-se de substituir
postgres:docker
pelo seu usuário e senha do PostgreSQL,localhost:5432
pela rota correta do seu servidor eapp
pelo seu banco.
-
Configuração do RabbitMQ:
- Certifique-se de que o RabbitMQ esteja instalado e em execução no seu ambiente.
- Verifique se as configurações do RabbitMQ estão corretas nos arquivos
src/infra/queue/RabbitMQAdapter.ts
dos diretóriospayment
eticket
.
-
Execute o microserviço de pagamento:
cd payment yarn start
-
Em outro terminal, execute o microserviço de ingressos:
cd ticket yarn start
-
Agora, os microserviços estão em execução e prontos para receber e processar eventos por meio da fila.
Você pode interagir com os microserviços através de APIs REST fornecidas pelos endpoints expostos pelos servidores.
-
Microserviço de Ingressos (Ticket):
-
Endpoint:
http://localhost:3333/purchase_ticket
-
Método: POST
-
Corpo da solicitação:
{ "eventId": "ID do evento", "email": "seu-email@example.com", "creditCardToken": "Token do cartão de crédito" }
-
Certifique-se de substituir "ID do evento", "seu-email@example.com" e "Token do cartão de crédito" pelos valores apropriados ao realizar as solicitações.
Contribuições são bem-vindas! Se você deseja contribuir com este projeto, siga as etapas abaixo:
- Faça um fork do repositório
- Crie uma branch para a sua contribuição:
git checkout -b minha-contribuicao
- Faça as alterações desejadas e faça commit das mes
mas: git commit -m 'Minha contribuição'
4. Envie as alterações para o seu fork: git push origin minha-contribuicao
5. Abra um pull request no repositório original
Este projeto está licenciado sob a MIT License.