Corrutinas y Reactivo en Kotlin
El grande: suspend + WebFlux, puente corrutinas↔Reactor (awaitBody/awaitSingle/mono{}), Flow↔Reactor, concurrencia estructurada, dispatchers, timeouts y retries.
- Paso 1
El modelo mental de suspend + WebFlux
En WebFlux, suspend no hace tu handler más rápido: permite que un hilo atienda miles de peticiones aparcando el trabajo en lugar de bloquearlo.
Leer lección - Paso 2
Puente entre Corrutinas y Reactor
Habla ambos dialectos con fluidez: espera un Mono/Flux desde codigo suspend y envuelve codigo suspend en un Publisher.
Leer lección - Paso 3
Flow ↔ Reactor: Puente entre Coroutines y WebFlux
Una sola llamada de conversión convierte un Flux de Reactor en un Flow idiomático de Kotlin, y de vuelta en una respuesta streaming de WebFlux.
Leer lección - Paso 4
Concurrencia estructurada en handlers suspend
Dispara llamadas en paralelo con coroutineScope, sobrevive a fallos parciales con supervisorScope y deja que la desconexion del cliente cancele todo gratis.
Leer lección - Paso 5
Contexto y dispatchers de corrutinas: withContext(Dispatchers.IO)
Una función suspend es una promesa de no bloquear: cúmplela aparcando las llamadas bloqueantes en Dispatchers.IO.
Leer lección - Paso 6
Resiliencia: timeouts y reintentos con coroutines y Reactor
Una dependencia lenta es una dependencia que falla: acota cada llamada suspend con un timeout y luego reinténtala con backoff.
Leer lección - Paso 7
Manejo de errores en el puente: excepciones, onError y fallbacks
Una excepcion lanzada y una senal onError de Reactor son dos caras del mismo fallo: el puente traduce entre ellas para que captures lo que esperas donde lo esperas.
Leer lección - Paso 8
Probando el stack reactivo: runTest, StepVerifier y WebTestClient
El codigo asincrono merece pruebas sincronas y deterministas, y el ecosistema de la JVM te da una herramienta precisa para cada capa.
Leer lección