Azure Functions (Serverless) con RESTEasy Reactive, Undertow o Reactive Routes
La extensión quarkus-azure-functions-http
permite escribir microservicios con RESTEasy Reactive (JAX-RS), Undertow (servlet), Reactive Routes o Funqy HTTP y hacer que estos microservicios se puedan desplegar en el tiempo de ejecución de Azure Functions.
Un despliegue de funciones azure puede representar cualquier número de endpoints JAX-RS, servlet, Reactive Routes o Funqy HTTP.
This technology is considered preview. En la preview, la compatibilidad con versiones anteriores y la presencia en el ecosistema no están garantizadas. Las mejoras específicas podrían requerir cambios en la configuración o en las API, y los planes para convertirse en estables están en marcha. Los comentarios son bienvenidos en nuestra lista de correo o como problemas en nuestro GitHub issue tracker. For a full list of possible statuses, check our FAQ entry. |
Por el momento, sólo se admiten los tipos de medios basados en texto, ya que Azure Functions HTTP Trigger para Java no admite un formato binario |
Requisitos previos
To complete this guide, you need:
-
Roughly 15 minutes
-
An IDE
-
JDK 11+ installed with
JAVA_HOME
configured appropriately -
Apache Maven 3.8.6
-
Optionally the Quarkus CLI if you want to use it
-
Optionally Mandrel or GraalVM installed and configured appropriately if you want to build a native executable (or Docker if you use a native container build)
-
Una cuenta de Azure. Las cuentas gratuitas funcionan.
Solución
Esta guía utiliza un arquetipo de Maven para generar un proyecto de ejemplo que contiene tres endpoints http escritos con APIs JAX-RS, APIs Servlet, Rutas Reactivas o APIs Funqy HTTP. Después de la construcción, usted será capaz de desplegar a Azure.
Creación del proyecto de implantación de Maven
Cree el proyecto Azure Maven para su aplicación Quarkus utilizando nuestro arquetipo Maven.
mvn archetype:generate \
-DarchetypeGroupId=io.quarkus \
-DarchetypeArtifactId=quarkus-azure-functions-http-archetype \
-DarchetypeVersion=2.16.5.Final
Ejecutando este comando se ejecutará maven en modo interactivo y le pedirá que rellene algunas propiedades de construcción:
-
groupId
- El groupId de maven de este proyecto generado. Escriba enorg.acme
. -
artifactId
- El artifactId de maven de este proyecto generado. Escriba enquarkus-demo
-
version
- Versión de este proyecto generado. -
package
- por defecto esgroupId
-
appName
- Use the default value. This is the application name in Azure. It must be a unique subdomain name under*.azurewebsites.net
. Otherwise, deploying to Azure will fail. -
appRegion
- Por defecto,westus
. Depende de su región azure. -
function
- Utilice el valor por defecto que esquarkus
. Nombre de su función azure. Puede ser cualquier cosa que desee. -
resourceGroup
- Utilice el valor por defecto. Sin embargo, cualquier valor es válido.
Los valores anteriores se definen como propiedades en el archivo pom.xml
generado.
Construir y desplegar en Azure
El pom.xml
que generó en el paso anterior usa el azure-functions-maven-plugin
. Ejecutar maven install genera los archivos de configuración y un directorio de staging requeridos por el azure-functions-maven-plugin
. Así es como se ejecuta.
./mvnw clean install azure-functions:deploy
If you haven’t already created your function up at azure, then build an uber-jar, package it, create the function at Azure, and deploy it.
Si el despliegue es un éxito, el plugin de azure le dirá la URL base para acceder a su función.
i.e.
Successfully deployed the artifact to https://quarkus-demo-123451234.azurewebsites.net
La URL para acceder al servicio sería
Extensión de las dependencias de maven
El proyecto de ejemplo incluye las extensiones RESTEasy Reactive, Undertow, Reactive Routes y Funqy HTTP. Si sólo utiliza una de esas APIs (es decir, sólo jax-rs), elimine respectivamente la dependencia de maven quarkus-resteasy-reactive
, quarkus-undertow
, quarkus-funqy-http
, y/o quarkus-reactive-routes
.
Debes incluir la extensión quarkus-azure-functions-http
ya que es un puente genérico entre el tiempo de ejecución de Azure Functions y el framework HTTP en el que estás escribiendo tus microservicios.
Descriptores de despliegue de Azure
Las plantillas para los descriptores de despliegue de Azure Functions ( host.json
, function.json
) están dentro del directorio azure-config
. Edítelos según sea necesario. Vuelva a ejecutar la compilación cuando esté listo.
NOTA: Si cambia el atributo function.json
path
o si añade un routePrefix
,
sus endpoints jax-rs no se enrutarán correctamente. Consulte Configuración de las rutas de acceso a la raíz para obtener más información.
Configuración de las rutas de acceso a la raíz
El prefijo de ruta por defecto para una Azure Function es /api
. Todos tus puntos finales JAX-RS, Servlet, Rutas Reactivas y Funqy HTTP deben tenerlo en cuenta explícitamente. En el proyecto generado esto es manejado por el interruptor quarkus.http.root-path
en application.properties
Si modifica el path
o añade un routePrefix
dentro del descriptor de despliegue azure-config/function.json
, su código o configuración debe reflejar también cualquier prefijo que especifique para su ruta.