https://github.com/vlambo3/my-spotify
I invite you to clone this repository if you want to build a MICROSERVICES application using the SPRING CLOUD FRAMEWORK.
https://github.com/vlambo3/my-spotify
config-server docker-compose eureka-server open-feign rabbitmq resilience4j spring-boot spring-cloud spring-cloud-gateway spring-cloud-netflix
Last synced: about 1 month ago
JSON representation
I invite you to clone this repository if you want to build a MICROSERVICES application using the SPRING CLOUD FRAMEWORK.
- Host: GitHub
- URL: https://github.com/vlambo3/my-spotify
- Owner: vlambo3
- Created: 2023-09-22T15:30:09.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-09-22T16:35:55.000Z (over 1 year ago)
- Last Synced: 2025-01-26T08:41:36.625Z (3 months ago)
- Topics: config-server, docker-compose, eureka-server, open-feign, rabbitmq, resilience4j, spring-boot, spring-cloud, spring-cloud-gateway, spring-cloud-netflix
- Language: Java
- Homepage: https://github.com/vlambo3/my-spotify
- Size: 127 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Proyecto My Spotify
## Objetivo
Lo invito a forkear este repositorio si quiere construir una aplicación de **MICROSERVICIOS** usando el **FRAMEWORK** de **SPRING CLOUD**.
Tabla de Contenidos
## Acerca del Proyecto
Se trata de un aplicación de microservicios por medio de la cual se puede guardar artistas y canciones y luego hacer consultas rápidas. En el siguiente esquema se puede observar su funcionamiento:
Se trata de tres microservicios: *API PLAYLIST*, *API SONG* y *API ARTIST*, que se encuentran registrados como clientes de Eureka y registrados en el *EUREKA SERVER*. Utilizan **Open Feign** para la comunicación sincrónica y **RabbitMQ** para la comunicación asincrónica.
Para el desarrollo del proyecto se usaron bases de datos relacionales y no relacionales (**MySQL** y **MongoDB**).A traves de *API GATEWAY* se puede acceder a *API PLAYLIST*, desde donde se pueden crear canciones y artistas con su respectivo género musical.
Cuando se crean canciones desde *API PLAYLIST* se persisten esas canciones en la base de datos relacional **MySQL** de *API SONG*, y en ese momennto se envía un mensaje a través de una cola de **RabbitMQ** a *API PLAYLIST* para que también lo persista en su base de datos no relacional **MongoDB**.
Lo mismo ocurre con artistas, cuando se crean artistas desde *API PLAYLIST* se persisten esos artistas es la base de datos no relacional **MongoDB** de *API ARTIST*, y en ese momento se envía un mensaje a través de una cola de **RabbitMQ** a *API PLAYLIST* para que también lo persista en su base de datos no relacional **MongoDB**.
Luego desde *API PLAYLIST* se pueden consultar tanto los artitas como las canciones filtradas por género musical a su base de datos no relacional **MongoDB**, de manera conjunta y de manera individual.Para la comunicación entre microservicios se utilizó **Open Feign**. Además está previsto un **Circuit Breaker** y **Retry**, ambos módulos de **Resilience4j**, en caso de que falle la comunicación entre microservicios al consultar por género a canciones.
Y se creo un método alternativo en caso de falla por medio del cual se consulta directamente a la base de datos no relacional de *API PLAYLIST*, en caso de no poder consultar a *API SONG*.Adicionalmente se puede observar la **traza distribuida** desde el dashboard de **Zipkin**.
### Construido con
El proyecto está construído con jdk 17, usando Spring Boot, Spring JPA, Spring MVC, Spring Cloud, Resilience4j, RabbitMQ, Zipkin, Docker-compose, MySQL, MongoDB, y Maven.
## Comencemos
Puede clonar este repositorio ejecutando el comando git clone junto con la url : https://github.com/vlambo3/my-spotify desde su consola de Git Bash
```
git clone https://github.com/vlambo3/my-spotify
```### Pre-requisitos
Una vez que clonó el proyecto puede correr el docker-compose y levantar los servidores de RabbitMQ, Zipkin y una imagen de la base de datos de MySQL. Para ello deberá ejecutar desde la terminal el comando:
```
docker compose up
```### Instalacion
Antes de correr este proyecto lea las siguientes recomendaciones:
- Previo a correr alguno de los servicios, cree manualmente dos colas en su dashboard de RabbitMQ: ArtistQueue y SongQueue.
- Levante primero el servicio de Eureka Server y luego el resto de los servicios (gateway, ms-playlist, ms-song, ms-artist).## Contacto
Project Link: [https://github.com/vlambo3/my-spotify](https://github.com/vlambo3/my-spotify)
LinkedIn Profile: [https://www.linkedin.com/in/vanina-a-godoy/](https://www.linkedin.com/in/vanina-a-godoy/)