Skip to content

About

Sistema de reserva de viajes usando Spring Boot y Temporal.io

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

spring-temporal

Sistema de reserva de viajes usando Spring Boot y Temporal.io

Descripción

Este proyecto es una demo de un sistema de reservas de viajes que utiliza Spring Boot y Temporal para la orquestación de flujos de trabajo distribuidos y gestión de compensaciones (sagas). Permite reservar vuelos, hoteles y transporte, y soporta confirmación/cancelación por parte del usuario.

Características

  • Orquestación de actividades de reserva (vuelo, hotel, transporte) usando Temporal Workflow.
  • Compensación automática en caso de fallo en alguna actividad.
  • Confirmación de reserva mediante señal del usuario.
  • Integración con Spring Boot y API REST para iniciar y confirmar reservas.
  • Ejemplo de integración con servicios externos simulados (REST, gRPC, Kafka).

Estructura del Proyecto

  • src/main/java/com/javatechie/activities: Interfaces e implementaciones de actividades de reserva.
  • src/main/java/com/javatechie/dto: DTOs para solicitudes de viaje.
  • src/main/java/com/javatechie/workflow: Definición e implementación del workflow de viaje.
  • src/main/java/com/javatechie/starter: Clase para iniciar workflows y enviar señales.
  • src/main/java/com/javatechie/controller: Controlador REST para exponer endpoints de reserva y confirmación.
  • src/main/java/com/javatechie/config: Configuración de Temporal y workers.
  • src/main/resources/application.properties: Configuración de la aplicación.
  • docker-compose.yml: Stack para levantar Temporal y PostgreSQL localmente.

Requisitos

  • Java 21+
  • Docker y Docker Compose
  • Maven

Instalación y Ejecución

  1. Levanta Temporal y PostgreSQL:

    docker-compose up -d
  2. Compila y ejecuta la aplicación:

    mvn clean package
    mvn spring-boot:run
  3. Accede a Temporal UI:
    http://localhost:8088

Uso de la API

Iniciar una reserva de viaje

POST /travel/book

Body:

{
  "userId": "usuario1",
  "destination": "Madrid",
  "travelDate": "2024-07-01"
}

Confirmar una reserva

POST /travel/confirm/{userId}

Parámetro:

  • userId: ID del usuario que confirma la reserva.

Notas de Implementación

  • El workflow implementa una saga: si alguna actividad falla, se ejecutan las compensaciones correspondientes.
  • Si el usuario no confirma la reserva en 2 minutos, la reserva se cancela automáticamente.
  • Las actividades simulan integración con servicios externos y pueden lanzar excepciones para probar la compensación.

Créditos

Demo creada por javatechie y adaptada para propósitos educativos.


¿Quieres saber más sobre cómo funciona cada parte? Consulta los archivos fuente principales:

About

Sistema de reserva de viajes usando Spring Boot y Temporal.io

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages