Patrones de Desarrollo Quarkus
Patrones de arquitectura y API de Quarkus 3.x para servicios cloud-native y orientados a eventos con Apache Camel.
Cuándo Activar
- Construir APIs REST con JAX-RS o RESTEasy Reactive
- Estructurar capas resource → service → repository
- Implementar patrones orientados a eventos con Apache Camel y RabbitMQ
- Configurar Hibernate Panache, caché o streams reactivos
- Agregar validación, mapeo de excepciones o paginación
- Configurar perfiles para entornos dev/staging/producción (configuración YAML)
- Logging personalizado con LogContext y Logback/Logstash encoder
- Trabajar con CompletableFuture para operaciones asíncronas
- Implementar procesamiento condicional de flujos
- Trabajar con compilación nativa GraalVM
Capa de Servicio con Múltiples Dependencias
Patrones Clave:
@RequiredArgsConstructorpara inyección por constructor mediante Lombok@Slf4jpara logging con Logback@Transactionalen métodos de servicio que escriben a través de Panache o repositorios- Validar entrada antes de persistencia o publicación de mensajes
- Seguimiento de eventos para escenarios de éxito/error
- Publicación asíncrona de mensajes Camel
Patrón de Contexto de Logging Personalizado (Logback)
Configuración de Logback (logback.xml):
Patrón de Servicio de Eventos
Publicación de Mensajes Camel (RabbitMQ)
Configuración de Ruta Camel:
Rutas Camel Direct (En Memoria)
Procesamiento de Archivos Camel
Estructura de API REST
Patrón de Repositorio (Panache Repository)
Capa de Servicio con Transacciones
DTOs y Validación
Mapeo de Excepciones
Operaciones Asíncronas con CompletableFuture
Caché
Configuración como YAML
Health Checks
Dependencias (Maven)
Buenas Prácticas
Arquitectura
- Usar
@RequiredArgsConstructorcon Lombok para inyección por constructor - Mantener la capa de servicio delgada; delegar lógica compleja a clases especializadas
- Usar rutas Camel para enrutamiento de mensajes y patrones de integración
- Preferir el patrón Panache Repository para acceso a datos
Orientado a Eventos
- Siempre rastrear operaciones con EventService (eventos de éxito/error)
- Usar endpoints
direct:de Camel para enrutamiento en memoria - Usar el componente
spring-rabbitmqpara integración con RabbitMQ
Logging
- Usar Logback con Logstash encoder para logging estructurado
- Propagar LogContext a través de llamadas de servicio con
SafeAutoCloseable - Usar
@Slf4jen lugar de instanciación manual del logger
Configuración
- Usar configuración YAML (
quarkus-config-yaml) - Configuración consciente de perfil para entornos dev/test/prod
- Externalizar configuración sensible a variables de entorno

