Este proyecto implementa un servicio de predicciones futbolísticas, permitiendo a los usuarios registrar y actualizar sus predicciones de resultados para partidos. Es parte de un sistema de microservicios basado en Spring Cloud Netflix Eureka
El Prediction Service proporciona una API REST para:
- Registro de predicciones de resultados
- Actualización de predicciones existentes
- Enlace entre predicciones, usuarios y partidos
Este servicio se registra automáticamente en el servidor de Eureka para que otros servicios (como el ApiGateway) puedan enrutar solicitudes hacia él.
| Método | Ruta | Descripción |
|---|---|---|
| POST | /predictions/ | Registra una predicción |
| PUT | /predictions/{userId}/{matchId} | Actualiza una predicción |
| GET | /predictions/{id} | devuelve la predicción |
- Java 17
- Spring Boot 3.4.x
- Spring Security (con JWT)
- Spring Data JPA
- PostgreSQL
- Spring Cloud Netflix Eureka Client
- Docker & Docker Compose
user-service/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/ProdeMaster/PredictionService/
│ │ │ ├── Controller/
│ │ │ │ └── PredictionController.java
│ │ │ ├── Model/
│ │ │ │ └── PredictionModel.java
│ │ │ ├── Repository/
│ │ │ │ └── PredictionRepository.java
│ │ │ ├── Service/
│ │ │ │ └── PredictionService.java
│ │ │ └── predictionServiceApplication.java
│ │ └── resources/
│ │ ├── static/
│ │ ├── templates/
│ │ └── application.properties
│ └── test/java/com/ProdeMaster/PredictionService/
│ └── UserModelServicesApplicationTests.java
├── Dockerfile
├── pom.xml
└── readme.md
El archivo application.properties contiene la configuración principal del servicio de predicciones, incluyendo puertos, nombre del servicio y detalles de conexión a Eureka.
spring.application.name=prediction-service
server.port=8082
#Configuracion general
spring.config.import=optional:configserver:
#Conectividad con zipkin para manejo de trazabilidad
spring.zipkin.base-url=http://zipkin:9411
management.zipkin.tracing.endpoint=http://zipkin:9411/api/v2/spans
management.tracing.sampling.probability=1.0
#Configuracion de Eureka
eureka.client.serviceUrl.defaultZone=http://eureka:8761/eureka/
eureka.instance.prefer-ip-address=true
#Configuracion de la base de datos PostgreSQL
spring.datasource.url=jdbc:postgresql://postgres:5433/prodeMaster_predication_db
spring.datasource.username=postgres
spring.datasource.password=admin
spring.datasource.driver-class-name=org.postgresql.Driver
⚠️ IMPORTANTE: Las credenciales de Postgres son valores de ejemplo proporcionados para facilitar el despliegue y pruebas en local. Bajo ningún concepto se recomienda conservar estos valores si desea llevar el servicio a producción
- JDK 17
- Maven
- Docker
mvn clean install
mvn spring-boot:run💡 NOTA: Es necesario disponer de un servicio de Postgres, con las credenciales anteriormente mencionadas, para que el servicio se conecte.
Es necesario modificar la propiedad
spring.datasource.urlconfigurándolo de la siguiente manerajdbc:postgresql://localhost:5433/prode_db
mvn clean package
docker image build -t prediction-service .
docker run -p 5433:5432 --name my-postgres -e POSTGRES_PASSWORD=admin -e POSTGRES_USER=postgres -e POSTGRES_DB=prodeMaster_predication_db postgres:17
docker run prediction-serviceEl servicio cuenta con un Dockerfile optimizado para producción basado en una imagen Java 17.
mvn clean package
docker image build -t prediction-service .Es necesario empaquetar la aplicación con
mvn clean packageantes de crear la imagen de docker
📂 Integración con otros servicios
Este servicio se registra en Eureka bajo el nombre prediction-service. Puede ser accedido a través del ApiGateway usando:
http://localhost:8080/prediction-service/Asegúrate de que spring.application.name=prediction-service coincida con la ruta configurada en ApiGateway.
Nombre: Gastón Herrlein
GitHub: @Gaston-Herrlein
Sin licencia