Para fins de estudos, foi separado uma pasta chamada modules contendo os modulos de RabbitMQ e Elasticsearch a fim de separar os arquivos criados para tais tecnologias e facilitar as futuras revisões de conteúdo. Projeto feito seguindo o curso "Desenvolvimento de Aplicações Modernas e Escaláveis com Microsserviços" da Code Education.
- Conexão com o Loopback feita através do server RabbitmqServer.
- A criação das exchanges é feita através do arquivo index.ts, na variável config que é passada para o método main() e posteriormente recuperadas em RabbitmqServer:createExchanges().
- A criação das queues é feita através de decorator @rabbitmqSubscribe que são recuperados em RabbitmqServer:searchMethodsWithDecorators(), onde é feita a criação da queue, seu bind e a ligação do consumidor da queue com o método anotado para que este realize a operação requerida.
- A Dead Letter Queue é criada através do index.ts com a exchange dlx.topic e a queue dlx.queue.topic que receberão todas as rejeições de mensagens das queues ligadas à exchange topic. Essa "camada morta" é recuperada e criada em RabbitmqServer:createQueues(). A ligação das queues com a exchange dlx.topic é feita também no decorator @rabbitmqSubscribe.
- A aplicação se conecta com o elastic através do conceito de conectores do Loopback. Estamos utilizando um conector de elastic(loopback-connector-es) para criar um DataSource na nossa aplicação(Esv7DataSource) que define as configurações de conexão;
- Aplicação: http://localhost:3001/
- Elasticsearch: http://localhost:9200/
- Kibana: http://localhost:5601/
- RabbitMQ: http://localhost:15672/
# Iniciar aplicações com Docker Compose:
docker-compose up
# Instalar dependências:
npm install
# Rodar aplicação:
npm start
# Buildar aplicação:
npm run build
# Style code:
npm run lint
# Executar migrations do DB:
npm run migrate
Você também pode rodar node .
para pular o passo de build.
Essa aplicação foi feita utilizando LoopBack 4 CLI com o initial project layout.