{"id":21828496,"url":"https://github.com/vlambo3/my-spotify","last_synced_at":"2026-04-05T23:38:35.399Z","repository":{"id":265107413,"uuid":"695205896","full_name":"vlambo3/my-spotify","owner":"vlambo3","description":"I invite you to clone this repository if you want to build a MICROSERVICES application using the SPRING CLOUD FRAMEWORK.","archived":false,"fork":false,"pushed_at":"2023-09-22T16:35:55.000Z","size":130,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T12:30:07.053Z","etag":null,"topics":["config-server","docker-compose","eureka-server","open-feign","rabbitmq","resilience4j","spring-boot","spring-cloud","spring-cloud-gateway","spring-cloud-netflix"],"latest_commit_sha":null,"homepage":"https://github.com/vlambo3/my-spotify","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vlambo3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-22T15:30:09.000Z","updated_at":"2024-06-04T19:48:09.000Z","dependencies_parsed_at":"2024-11-27T18:16:45.082Z","dependency_job_id":"86105e3a-5fc2-4d3a-a831-8aa0af60e43a","html_url":"https://github.com/vlambo3/my-spotify","commit_stats":null,"previous_names":["vlambo3/my-spotify"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vlambo3/my-spotify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlambo3%2Fmy-spotify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlambo3%2Fmy-spotify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlambo3%2Fmy-spotify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlambo3%2Fmy-spotify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vlambo3","download_url":"https://codeload.github.com/vlambo3/my-spotify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vlambo3%2Fmy-spotify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31454199,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["config-server","docker-compose","eureka-server","open-feign","rabbitmq","resilience4j","spring-boot","spring-cloud","spring-cloud-gateway","spring-cloud-netflix"],"created_at":"2024-11-27T18:16:42.025Z","updated_at":"2026-04-05T23:38:35.381Z","avatar_url":"https://github.com/vlambo3.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n# Proyecto My Spotify\n\n## Objetivo\nLo invito a forkear este repositorio si quiere construir una aplicación de **MICROSERVICIOS** usando el **FRAMEWORK** de **SPRING CLOUD**. \n\n\u003cbr /\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTabla de Contenidos\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#acerca-del-proyecto\"\u003eAcerca del Proyecto\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#construido-con\"\u003eConstruido con\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#Comencemos\"\u003eComencemos\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#pre-requisitos\"\u003ePre-requisitos\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#instalacion\"\u003eInstalación\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contacto\"\u003eContacto\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## Acerca del Proyecto\n\nSe 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: \n![image](https://github.com/vlambo3/my-spotify/assets/86501009/9b696a8c-7e95-470e-a596-76b67a01fad3)\n\n\nSe 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.\nPara el desarrollo del proyecto se usaron bases de datos relacionales y no relacionales (**MySQL** y **MongoDB**). \n\nA traves de *API GATEWAY* se puede acceder a *API PLAYLIST*, desde donde se pueden crear canciones y artistas con su respectivo género musical.\nCuando 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**. \nLo 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**.\nLuego 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.\n\nPara 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. \nY 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*.\n\nAdicionalmente se puede observar la **traza distribuida** desde el dashboard de **Zipkin**.\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Construido con\n\nEl 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.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n## Comencemos\n\nPuede clonar este repositorio ejecutando el comando git clone junto con la url : https://github.com/vlambo3/my-spotify desde su consola de Git Bash\n  ```\n  git clone https://github.com/vlambo3/my-spotify\n  ```\n\n\n### Pre-requisitos\n\nUna 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:\n\n  ```\n  docker compose up\n  ```\n\n### Instalacion\n\nAntes de correr este proyecto lea las siguientes recomendaciones:\n\n - Previo a correr alguno de los servicios, cree manualmente dos colas en su dashboard de RabbitMQ: ArtistQueue y SongQueue.\n   \n - Levante primero el servicio de Eureka Server y luego el resto de los servicios (gateway, ms-playlist, ms-song, ms-artist).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- CONTACT --\u003e\n## Contacto\n\nProject Link: [https://github.com/vlambo3/my-spotify](https://github.com/vlambo3/my-spotify)\n\nLinkedIn Profile: [https://www.linkedin.com/in/vanina-a-godoy/](https://www.linkedin.com/in/vanina-a-godoy/)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlambo3%2Fmy-spotify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvlambo3%2Fmy-spotify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvlambo3%2Fmy-spotify/lists"}