Qué es un stream y un registry en Quarkus (y cómo usarlos correctamente)

Entender qué son stream y registry es esencial para elegir la versión correcta de Quarkus al crear un proyecto desde la Quarkus CLI. Estos dos conceptos definen cómo se selecciona y resuelve una plataforma, tanto en Quarkus comunitario como en Red Hat Build of Quarkus (RHBQ).

Un buen uso de stream y registry te permite mantener tus aplicaciones actualizadas, reproducibles y alineadas con el soporte esperado.

📘 Si aún no instalaste Quarkus CLI, te recomiendo ver Entorno de desarrollo ideal para Quarkus


📦 ¿Qué es un registry?

Un registry es un catálogo desde donde Quarkus CLI obtiene información sobre las plataformas disponibles:

  • Los streams existentes
  • Las versiones publicadas
  • Las extensiones que incluye cada plataforma

Piensa en el registry como un «índice» que le dice a Quarkus CLI: «estas son las versiones de Quarkus disponibles y sus características».

Registry por defecto

Quarkus CLI viene preconfigurado solamente con el registry comunitario:

registry.quarkus.io (plataforma io.quarkus.platform)

Registry empresarial (RHBQ)

Si tienes suscripción de Red Hat, podrás agregar el registry empresarial (explicado más adelante):

registry.quarkus.redhat.com (plataforma com.redhat.quarkus.platform)

🌊 ¿Qué es un stream?

Un stream representa una familia de versiones Quarkus. Por ejemplo: 3.153.203.27.

Es como decir: «quiero la última versión estable dentro de esta rama».

Cuando usas --stream (o -S), Quarkus CLI consulta el registry y selecciona automáticamente la última versión disponible de ese grupo.

Ejemplo:

quarkus create app com.ejemplo:mi-api --stream=io.quarkus.platform:3.27

Si la última versión publicada del stream 3.27 es la 3.27.1, el proyecto se creará con esa versión.


📋 ¿Qué es un platform-bom?

Un BOM (Bill of Materials) es un archivo Maven que define un conjunto coherente de versiones de dependencias. En Quarkus, el platform-bom define qué versión exacta de cada extensión es compatible entre sí.

La opción --platform-bom (o -P) permite especificar manualmente la coordenada Maven exacta (groupId:artifactId:version).

Ejemplo:

quarkus create app com.ejemplo:mi-api \
  --platform-bom=com.redhat.quarkus.platform:quarkus-bom:3.20.4.redhat-00001

Esto crea el proyecto con una versión exacta de RHBQ, sin depender de ningún registry.


🆚 Diferencias entre –stream y –platform-bom

Aspecto--stream--platform-bom
Requiere registry✅ Sí❌ No
Versión seleccionadaLa última del streamLa que especificas exactamente
Ideal paraDesarrollo continuo, siempre actualizadoControl absoluto, reproducibilidad
Sintaxis--stream=plataforma:familia--platform-bom=groupId:artifactId:version

🔐 Configurar el registry de RHBQ

Si tienes suscripción de Red Hat y quieres usar --stream con versiones empresariales, necesitas configurar dos cosas:

1. Agregar el registry a Quarkus CLI

Crea o edita el archivo ~/.quarkus/config.yaml:

# ~/.quarkus/config.yaml
registries:
  - registry.quarkus.redhat.com
  - registry.quarkus.io

⚠️ Importante: Respeta la indentación YAML (2 espacios).

2. Configurar el repositorio Maven de Red Hat

Crea o edita ~/.m2/settings.xml:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
          http://maven.apache.org/xsd/settings-1.0.0.xsd">
  
  <profiles>
    <profile>
      <id>red-hat-enterprise-maven-repository</id>
      <repositories>
        <repository>
          <id>red-hat-ga</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>false</enabled></snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>red-hat-ga</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>false</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  
  <activeProfiles>
    <activeProfile>red-hat-enterprise-maven-repository</activeProfile>
  </activeProfiles>
  
</settings>

3. Verificar la configuración

quarkus registry

Deberías ver ambos registries listados.


🚨 ¿Qué pasa si no configuras el registry de RHBQ?

Sin el registry configurado:

  • ❌ No puedes usar --stream con versiones empresariales
  • ✅ Puedes usar --platform-bom especificando la coordenada exacta
# Esto funciona sin registry configurado
quarkus create app com.ejemplo:api \
  --platform-bom=com.redhat.quarkus.platform:quarkus-bom:3.27.1.redhat-00003

🚀 Consejo de Quarkiverso

Si alternas entre Quarkus comunitario y RHBQ, configura ambos registries como hemos explicado. De esta forma, Quarkus CLI podrá elegir automáticamente según el stream que especifiques, sin necesidad de cambiar comandos o archivos cada vez.

Para usar RHBQ explícitamente con --stream:

quarkus create app com.ejemplo:api --stream=com.redhat.quarkus.platform:3.27

Para usar Quarkus comunitario:

quarkus create app com.ejemplo:api --stream=io.quarkus.platform:3.27

Sin especificar plataforma:

Cuando hay múltiples registries configurados y no especificas plataforma, Quarkus CLI los consulta en el orden del archivo ~/.quarkus/config.yaml hasta encontrar el stream solicitado.

quarkus create app com.ejemplo:api --stream=3.26

Dado que Red Hat Build of Quarkus (RHBQ) no expone un stream 3.26, la CLI no lo encuentra en el registry de Red Hat y continúa con el siguiente registry, donde sí existe el stream 3.26 de la plataforma comunitaria, que es el que finalmente se utiliza.


📚 Recursos recomendados


Conclusión: elegir bien desde el inicio

Elegir un stream y un registry no es un detalle técnico más: es la decisión inicial sobre la que Quarkus construye todo lo demás. Versiones, extensiones, compatibilidad y soporte quedan definidas desde ese primer comando.

Una vez creado el proyecto con Quarkus CLI, esa elección ya forma parte de su base. Por eso, entender cómo la CLI resuelve plataformas y cuándo ser explícito evita sorpresas más adelante.

Y como toda buena exploración, elegir bien la ruta al inicio te ahorra correcciones costosas más adelante.