Skip to content

Este é um projeto simples de um restaurante utilizando uma arquitetura de microsserviços.

Notifications You must be signed in to change notification settings

Kamilahsantos/delivery-kafka-dio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

delivery (exercício lab da dio)

Este é um projeto simples de um restaurante utilizando uma arquitetura de microsserviços. Exitem 2 APIs (Garçom e App), onde o cliente pode fazer os seus pedidos. Essas APIs enviam o pedido para a cozinha, já separando o que é para o cozinheiro fazer e o que é para o barman fazer. Depois o cozinheiro e o barman enviam o pedido para o balcão, de onde o garçom pega e entrega na mesa, ou para o balcão do delivery, onde os pedidos são separados para serem entregues pelo motoboy.

dio-restaurant

Os microsserviços são:

Todos foram feitos em Node.js, utilizando o Express como servidor. A comunicação entre eles é feita utilizando Kafka. Também foi utilizado o Redis para gerenciar os pedidos do App.

Rodando o Projeto com Docker e Docker Compose

Como são várias aplicações, a maneira mais fácil de rodar todas elas é com o Docker Compose.

Dependências

Antes de começar a instalar e rodar o projeto é necessário instalar algumas dependências:

Primeira execução

Na primeira vez que subirmos a instância do kafka precisamos criar os tópicos que serão utilizados no projeto. Para isso, primeiro subimos a aplicação:

docker-compose up -d kafka
docker-compose up -d redis
npm install

Agora precisamos criar os tópicos que serão usados. Para isso, rodamos os seguintes comandos:

docker-compose exec kafka kafka-topics --create --topic order --partitions 4 --replication-factor 1 --if-not-exists --zookeeper zookeeper:2181
docker-compose exec kafka kafka-topics --create --topic balcony --partitions 4 --replication-factor 1 --if-not-exists --zookeeper zookeeper:2181
docker-compose exec kafka kafka-topics --create --topic deliveryBalcony --partitions 4 --replication-factor 1 --if-not-exists --zookeeper zookeeper:2181
docker-compose exec kafka kafka-topics --create --topic delivery --partitions 4 --replication-factor 1 --if-not-exists --zookeeper zookeeper:2181

Utilizando as APIs

A API do Garçom está exposta na url http://localhost:3000 e a do App na url http://localhost:4000.

Exemplo de request para fazer o pedido para o Garçom:

curl --header "Content-Type: application/json" \
  --request POST \
  --data '{ "table": 1, "food": ["food1", "food2"], "drinks": ["drink1", "drink2"] }' \
  http://localhost:3000/order

Exemplo de request para fazer o pedido para o App:

curl --header "Content-Type: application/json" \
  --request POST \
  --data '{ "address": "address 1", "food": ["food1", "food2"], "drinks": ["drink1", "drink2"] }' \
  http://localhost:4000/order

About

Este é um projeto simples de um restaurante utilizando uma arquitetura de microsserviços.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages