Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Esta guía ayuda con la migración a Spring Cloud Azure 4.0 desde bibliotecas heredadas de Azure Spring.
Introducción
Llamaremos a las bibliotecas cuyo identificador de grupo y cuyo identificador de artefacto sigan el patrón las bibliotecas modernas, y a aquellas con el patrón , o las bibliotecas heredadas.
Esta guía se centrará en comparaciones en paralelo para configuraciones similares entre las bibliotecas modernas y heredadas.
Se supone que está familiarizado con com.azure.spring:azure-spring-boot-*, com.azure.spring:azure-spring-cloud-* o paquete de com.azure.spring:azure-spring-integration-*.
Si no está familiarizado con las bibliotecas de Spring Cloud Azure 4.0, consulte la guía para desarrolladores de Spring Cloud Azure en lugar de esta guía.
Ventajas de la migración
Una pregunta natural que se debe plantear al considerar si adoptar una nueva versión o biblioteca es sus ventajas. A medida que Azure ha madurado y ha sido adoptado por un grupo más diverso de desarrolladores, nos hemos centrado en identificar los patrones y las prácticas que mejor apoyan la productividad de los desarrolladores y en comprender las carencias de las bibliotecas Spring Cloud Azure.
Hubo varias áreas de comentarios coherentes expresadas en las bibliotecas de Spring Cloud Azure. Lo más importante es que las bibliotecas de diferentes Azure servicios no han habilitado el conjunto completo de configuraciones. Además, la inconsistencia en la nomenclatura de los proyectos, los identificadores de artefacto, las versiones y las configuraciones hicieron que la curva de aprendizaje fuera pronunciada.
Para mejorar la experiencia de desarrollo en las bibliotecas de spring Cloud Azure, se introdujo un conjunto de directrices de diseño para garantizar que las bibliotecas de Spring Cloud Azure tengan una sensación natural e idiomática con respecto al ecosistema de Spring. Hay más detalles disponibles en el documento de diseño para quienes estén interesados.
Spring Cloud Azure 4.0 proporciona la experiencia compartida entre bibliotecas que se integran con diferentes proyectos de Spring, como Spring Boot, Spring Integration, Spring Cloud Stream, etc. La experiencia compartida incluye:
- Una BOM unificada que incluye todas las bibliotecas de Spring Cloud Azure 4.0.
- Una convención de nomenclatura coherente para los artefactos.
- Una manera unificada de configurar las credenciales, el proxy, el reintento, el entorno en la nube y la configuración de la capa de transporte.
- Admite todos los métodos de autenticación que admite un Azure Service o Azure Service SDK.
Visión general
Esta guía de migración consta de las secciones siguientes:
- Cambios de nomenclatura para Spring Cloud Azure 4.0
- Cambios en el artefacto: cambio de nombre, agregado o eliminado
- Cambios de dependencia
- Cambios de autenticación
- Propiedades de configuración
- Cambios importantes en la API
- Cambios en la biblioteca
Cambios de nomenclatura
Nunca ha habido un nombre coherente o oficial para llamar a todas las bibliotecas de Spring Cloud Azure. Algunos de ellos se llamaron Azure Spring Boot y algunos de ellos Spring on Azure. Desde la versión 4.0, empezamos a usar el nombre del proyecto Spring Cloud Azure para representar todas las bibliotecas de Azure Spring.
BOM
Antes distribuíamos dos BOM de nuestras bibliotecas, la azure-spring-boot-bom y la azure-spring-cloud-dependencies, pero a partir de la versión 4.0 combinamos estas dos BOM en una sola, la spring-cloud-azure-dependencies. Agregue una entrada en la sección dependencyManagement del proyecto para beneficiarse de la administración de dependencias.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>7.4.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Nota
Si usa Spring Boot 4.0.x, establezca la versión spring-cloud-azure-dependencies en 7.4.0.
Si usa Spring Boot 3.5.x, establezca la versión spring-cloud-azure-dependencies en 6.5.0.
Si utiliza Spring Boot 3.1.x-3.5.x, asegúrese de establecer la versión de spring-cloud-azure-dependencies en 5.25.0.
Si usa Spring Boot 2.x, asegúrese de establecer la versión de spring-cloud-azure-dependencies en 4.20.0.
Esta lista de materiales (BOM) debe configurarse en la sección <dependencyManagement> del archivo pom.xml. Esto garantiza que todas las dependencias de Spring Cloud Azure usen la misma versión.
Para obtener más información sobre la versión utilizada para este BOM, consulte Which Version of Spring Cloud Azure Should I Use.
Cambios en el artefacto: cambio de nombre, agregado o eliminado
Los identificadores de grupo son los mismos para las bibliotecas modernas y heredadas de Spring Cloud Azure. Todos son com.azure.spring. Los identificadores de artefacto para las bibliotecas modernas de Spring Cloud Azure han cambiado. Según el proyecto de Spring al que pertenece, Spring Boot, Spring Integration o Spring Cloud Stream, el patrón de identificadores de artefacto podría ser spring-cloud-azure-starter-[service], spring-integration-azure-[service]o spring-cloud-azure-stream-binder-[service]. Los inicializadores heredados correspondientes tienen un ID de artefacto que sigue el patrón azure-spring-*. Esto ofrece una forma rápida y accesible de entender de un vistazo si está usando starters modernos o heredados.
En el proceso de desarrollo de Spring Cloud Azure 4.0, hemos cambiado el nombre de algunos artefactos para que sigan las nuevas convenciones de nomenclatura, elimine algunos artefactos para que la funcionalidad pueda colocarse en un artefacto más adecuado y agregar algunos artefactos nuevos para atender mejor algunos escenarios.
En la tabla siguiente se muestran las asignaciones entre el identificador de artefacto heredado y el identificador de artefacto moderno:
| Identificador de artefacto heredado | Identificador de artefacto moderno | Descripción |
|---|---|---|
azure-spring-boot-starter |
spring-cloud-azure-starter |
Este artefacto se ha eliminado y toda su funcionalidad se ha integrado en el nuevo artefacto spring-cloud-azure-starter. |
azure-spring-boot-starter-active-directory |
spring-cloud-azure-starter-active-directory |
Se cambió el nombre del artefacto. |
azure-spring-boot-starter-active-directory-b2c |
spring-cloud-azure-starter-active-directory-b2c |
Se cambió el nombre del artefacto. |
azure-spring-boot-starter-cosmos |
spring-cloud-azure-starter-data-cosmos |
Se ha cambiado el nombre del artefacto para agregar data, lo que indica el uso de Spring Data Azure Cosmos DB. |
azure-spring-boot-starter-keyvault-certificates |
no aplicable | No se incluye en esta versión, pero se admitirá en versiones posteriores. |
azure-spring-boot-starter-keyvault-secrets |
spring-cloud-azure-starter-keyvault-secrets |
Se cambió el nombre del artefacto. |
azure-spring-boot-starter-servicebus-jms |
spring-cloud-azure-starter-servicebus-jms |
Se cambió el nombre del artefacto. |
azure-spring-boot-starter-storage |
spring-cloud-azure-starter-storage-blob spring-cloud-azure-starter-storage-file-share |
El artefacto heredado contiene la funcionalidad tanto de Storage Blob como de File Share; en la versión 4.0, se ha dividido en dos artefactos independientes, spring-cloud-azure-starter-storage-blob y spring-cloud-azure-starter-storage-file-share. |
azure-spring-boot |
no aplicable | Este artefacto se ha eliminado y toda su funcionalidad se ha integrado en el nuevo artefacto spring-cloud-azure-autoconfigure. |
azure-spring-cloud-autoconfigure |
no aplicable | Este artefacto se ha eliminado y toda su funcionalidad se ha integrado en el nuevo artefacto spring-cloud-azure-autoconfigure. |
azure-spring-cloud-context |
no aplicable | Este artefacto se ha eliminado y toda su funcionalidad se ha integrado en los nuevos artefactos spring-cloud-azure-autoconfigure y spring-cloud-azure-resourcemanager. |
azure-spring-cloud-messaging |
spring-messaging-azure |
Se ha eliminado la anotación de escucha de mensajería. |
azure-spring-cloud-starter-cache |
no aplicable | Este artefacto se ha eliminado; para usar Redis, solo añada spring-boot-starter-data-redis, spring-boot-starter-cache, spring-cloud-azure-resourcemanager y spring-cloud-azure-starter. Para obtener más información sobre el uso, consulte Spring Cloud Azure Redis support. |
azure-spring-cloud-starter-eventhubs-kafka |
no aplicable | Este artefacto ha sido eliminado; para usar Kafka, solo tiene que añadir Spring Kafka, spring-cloud-azure-resourcemanager y spring-cloud-azure-starter. Para obtener más información sobre el uso, consulte Spring Cloud Azure compatibilidad con Kafka. |
azure-spring-cloud-starter-eventhubs |
spring-cloud-azure-starter-integration-eventhubs |
Se ha cambiado el nombre del artefacto para agregar integration, que indica el uso de Spring Integration con Event Hubs. |
azure-spring-cloud-starter-servicebus |
spring-cloud-azure-starter-integration-servicebus |
Se ha cambiado el nombre del artefacto para agregar integration, lo que indica el uso de Spring Integration con Service Bus. |
azure-spring-cloud-starter-storage-queue |
spring-cloud-azure-starter-integration-storage-queue |
Se ha cambiado el nombre del artefacto para agregar integration, que indica el uso de Spring Integration with Storage Queue. |
azure-spring-cloud-storage |
no aplicable | Este artefacto se ha eliminado y todas sus funcionalidades se han integrado en el nuevo artefacto spring-cloud-azure-autoconfigure. |
azure-spring-cloud-stream-binder-eventhubs |
spring-cloud-azure-stream-binder-eventhubs |
Este artefacto se ha refactorizado mediante un nuevo diseño, principalmente spring-cloud-azure-stream-binder-eventhubs y spring-cloud-azure-stream-binder-eventhubs-core. |
azure-spring-cloud-stream-binder-service-core |
spring-cloud-azure-stream-binder-servicebus-core |
Se cambió el nombre del artefacto. |
azure-spring-cloud-stream-binder-servicebus-queue |
spring-cloud-azure-stream-binder-servicebus |
Este artefacto se ha eliminado y toda su funcionalidad se ha integrado en el artefacto spring-cloud-azure-stream-binder-servicebus. |
azure-spring-cloud-stream-binder-servicebus-topic |
spring-cloud-azure-stream-binder-servicebus |
Este artefacto se ha eliminado y toda su funcionalidad se ha integrado en el artefacto spring-cloud-azure-stream-binder-servicebus. |
azure-spring-integration-core |
spring-integration-azure-core |
Se cambió el nombre del artefacto. |
azure-spring-integration-eventhubs |
spring-integration-azure-eventhubs |
Cambie el nombre del artefacto. |
azure-spring-integration-servicebus |
spring-integration-azure-servicebus |
Cambie el nombre del artefacto. |
azure-spring-integration-storage-queue |
spring-integration-azure-storage-queue |
Cambie el nombre del artefacto. |
| no aplicable | spring-cloud-azure-actuator |
El artefacto Spring Cloud Azure Actuator añadido recientemente. |
| no aplicable | spring-cloud-azure-actuator-autoconfigure |
El artefacto de autoconfiguración del Spring Cloud Azure Actuator recién agregado, incluida la autoconfiguración para el accionador. |
| no aplicable | spring-cloud-azure-autoconfigure |
Se ha añadido el artefacto Spring Cloud Azure AutoConfigure, que incluye toda la configuración automática para los clientes del SDK, la compatibilidad con Spring Security, la compatibilidad con Spring Data y la compatibilidad con Spring Integration. |
| no aplicable | spring-cloud-azure-core |
Nuevo artefacto de Spring Cloud Azure Core, que incluye toda la funcionalidad principal. |
| no aplicable | spring-cloud-azure-resourcemanager |
Nuevo artefacto de Resource Manager añadido recientemente. Es la biblioteca principal que usa Azure Resource Manager para leer metadatos y crear recursos. |
| no aplicable | spring-cloud-azure-service |
Se ha añadido recientemente el nuevo artefacto de Spring Cloud Azure Service, que incluye abstracciones para los servicios de Azure. |
| no aplicable | spring-cloud-azure-starter-appconfiguration |
Iniciador agregado recientemente para usar el cliente del SDK de Azure App Configuration. |
| no aplicable | spring-cloud-azure-starter-cosmos |
Se ha agregado recientemente una plantilla inicial para usar el cliente del SDK de Azure Cosmos DB. |
| no aplicable | spring-cloud-azure-starter-eventhubs |
Se ha añadido recientemente una plantilla inicial para usar el cliente del SDK de Azure Event Hubs. |
| no aplicable | spring-cloud-azure-starter-servicebus |
Se ha agregado una plantilla inicial para usar el cliente del SDK de Azure Service Bus. |
| no aplicable | spring-cloud-azure-starter-storage-blob |
Se ha añadido una nueva plantilla inicial para usar el cliente de Blob Storage de Azure SDK. |
| no aplicable | spring-cloud-azure-starter-storage-file-share |
Iniciador agregado recientemente para usar el cliente del SDK para Azure Storage File Share. |
| no aplicable | spring-cloud-azure-starter-storage-queue |
Iniciador añadido recientemente para usar el cliente del SDK de Azure Storage Queue. |
| no aplicable | spring-cloud-azure-starter-stream-eventhubs |
Iniciador agregado recientemente para utilizar el Spring Cloud Stream Binder de Azure Event Hubs. |
| no aplicable | spring-cloud-azure-starter-stream-servicebus |
Nuevo starter para usar el Azure Service Bus Spring Cloud Stream Binder |
| no aplicable | spring-cloud-azure-stream-binder-eventhubs-core |
Artefacto principal de Spring Cloud Stream recién agregado para Azure Event Hubs. |
Cambios en las dependencias
Algunas dependencias innecesarias se incluyeron en los artefactos heredados, que hemos quitado en las bibliotecas modernas de Spring Cloud Azure 4.0. Asegúrese de agregar las dependencias eliminadas manualmente al proyecto para evitar bloqueos.
Las bibliotecas que tienen cambios de dependencia incluyen:
spring-cloud-azure-starterspring-cloud-azure-starter-active-directoryspring-cloud-azure-starter-active-directory-b2c
Cambios de autenticación
Spring Cloud Azure 4.0 admite todos los métodos de autenticación que admite cada SDK de Azure Service. Permite configurar una credencial de token global, así como proporcionar la credencial de token en cada nivel de servicio. Pero no se requiere una credencial para configurar Spring Cloud Azure 4.0 porque puede aplicar la credencial almacenada en un entorno de desarrollo local o una identidad administrada en Azure Services. Solo asegúrese de que la identidad tenga permisos suficientes para acceder a los recursos de Azure de destino.
Nota
Cuando se asignan roles a las entidades de seguridad para interactuar con los servicios de mensajería de Azure, se necesitan los roles de Data vinculados para realizar operaciones de mensajería. Para las bibliotecas de Azure Spring Apps Stream Event Hubs / Service Bus Binder, se requiere el rol Contributor cuando se necesita la función de creación automática de recursos. Para obtener más información, consulte roles integrados de Azure.
Una credencial encadenada, el DefaultAzureCredential bean se configura automáticamente de forma predeterminada y se usará en todos los componentes si no se especifica más información de autenticación. Para obtener más información, consulte la sección DefaultAzureCredential de Azure Identity client library for Java.
Propiedades de configuración
Migración de propiedades
Hemos creado un additional-spring-configuration-metadata.json archivo para suavizar la migración de propiedades al usar con spring-boot-properties-migrator. En primer lugar, agregue el siguiente migrador de propiedades a la aplicación:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-properties-migrator</artifactId>
<scope>runtime</scope>
</dependency>
O bien, si usa Gradle:
runtime("org.springframework.boot:spring-boot-properties-migrator")
Si ejecuta la aplicación, identificará las propiedades que ya no administra Spring Cloud Azure. Si hay un reemplazo, se reasignará temporalmente la propiedad y se mostrará una advertencia. Si no hay un reemplazo, un informe de errores le proporcionará más información. En cualquier caso, hay que actualizar la configuración y eliminar la dependencia una vez que se haya actualizado la configuración.
Antes de continuar, es recomendable usar la característica de búsqueda del IDE para comprobar que no usa una de las propiedades que ha migrado en una prueba de integración.
Nota
Hemos cambiado muchas propiedades de configuración en este cambio. El uso de la spring-boot-properties-migrator ayudará a suavizar la migración.
Configuraciones globales
El spring-cloud-azure-starter moderno le permite definir propiedades que se aplican a todos los SDK de Azure del espacio de nombres spring.cloud.azure. Esta característica no era compatible con el antiguo azure-spring-boot-starter. Las configuraciones globales se pueden dividir en cinco categorías, que se muestran en la tabla siguiente:
| Prefijo | Descripción |
|---|---|
spring.cloud.azure.client |
Configura los clientes de transporte debajo de cada SDK de Azure. |
spring.cloud.azure.credential |
Configura cómo autenticarse con Microsoft Entra ID. |
spring.cloud.azure.profile |
Configura el entorno de nube de Azure. |
spring.cloud.azure.proxy |
Configura las opciones de proxy, se aplica a todos los clientes SDK de Azure. |
spring.cloud.azure.retry |
Configura las opciones de reintento, se aplica a todos los clientes de SDK de Azure. Las opciones de reintento solo son compatibles con algunos de los SDK; no hay spring.cloud.azure.cosmos.retry. |
Para obtener una lista completa de las configuraciones, consulte Spring Cloud Azure propiedades de configuración.
Configuración de cada SDK
Para obtener más información sobre las opciones de configuración en el nivel de SDK, use los vínculos siguientes:
-
De
azure-spring-boot-starter-active-directoryaspring-cloud-azure-starter-active-directory -
De
azure-spring-boot-starter-active-directory-b2caspring-cloud-azure-starter-active-directory-b2c -
De
azure-spring-boot-starter-cosmosaspring-cloud-azure-starter-data-cosmos -
De
azure-spring-boot-starter-keyvault-secretsaspring-cloud-azure-starter-keyvault-secrets -
De
azure-spring-boot-starter-servicebus-jmsaspring-cloud-azure-starter-servicebus-jms -
De
azure-spring-boot-starter-storageaspring-cloud-azure-starter-storage-blob -
De
azure-spring-boot-starter-storageaspring-cloud-azure-starter-storage-file-share -
De
azure-spring-cloud-starter-eventhubsaspring-cloud-azure-starter-integration-eventhubs -
De
azure-spring-cloud-starter-servicebusaspring-cloud-azure-starter-integration-servicebus -
De
azure-spring-cloud-starter-storage-queueaspring-cloud-azure-starter-integration-storage-queue -
De
azure-spring-cloud-stream-binder-eventhubsaspring-cloud-azure-stream-binder-eventhubs -
De
azure-spring-cloud-stream-binder-servicebus-*aspring-cloud-azure-stream-binder-servicebus
Cambios importantes en la API
Para más información sobre los cambios importantes de api en cada biblioteca, use los vínculos siguientes:
-
De
azure-spring-boot-starter-active-directoryaspring-cloud-azure-starter-active-directory -
De
azure-spring-boot-starter-active-directory-b2caspring-cloud-azure-starter-active-directory-b2c -
De
azure-spring-boot-starter-storageaspring-cloud-azure-starter-storage-blob -
De
azure-spring-boot-starter-storageaspring-cloud-azure-starter-storage-file-share -
De
azure-spring-cloud-starter-eventhubsaspring-cloud-azure-starter-integration-eventhubs -
De
azure-spring-integration-eventhubsaspring-integration-azure-eventhubs -
De
azure-spring-cloud-starter-servicebusaspring-cloud-azure-starter-integration-servicebus -
De
azure-spring-integration-servicebusaspring-integration-azure-servicebus -
De
azure-spring-cloud-starter-storage-queueaspring-cloud-azure-starter-integration-storage-queue -
De
azure-spring-integration-storage-queueaspring-integration-azure-storage-queue -
De
azure-spring-cloud-stream-binder-eventhubsaspring-cloud-azure-stream-binder-eventhubs -
De
azure-spring-cloud-stream-binder-servicebus-*aspring-cloud-azure-stream-binder-servicebus
Cambios en la biblioteca
Los cambios importantes en cada biblioteca se presentan de la siguiente manera.
De azure-spring-boot-starter a spring-cloud-azure-starter
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-starter desde la versión 3 de azure-spring-boot-starter.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios de dependencia
Algunas dependencias innecesarias se incluyeron en los artefactos heredados, que hemos quitado en las bibliotecas modernas de Spring Cloud Azure 4.0. Asegúrese de agregar las dependencias eliminadas manualmente al proyecto para evitar un bloqueo accidental.
En la tabla siguiente se muestran las dependencias quitadas:
| Dependencias eliminadas | Descripción |
|---|---|
org.springframework.boot:spring-boot-starter-validation |
Incluya el inicio de validación si desea usar el validador hibernado. |
De azure-spring-boot-starter-active-directory a spring-cloud-azure-starter-active-directory
Esta guía está pensada para ayudar a la migración a spring-cloud-azure-starter-active-directory desde la versión 3 de azure-spring-boot-starter-active-directory.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios de dependencia
Se han eliminado algunas dependencias innecesarias del artefacto heredado con la moderna biblioteca Spring Cloud Azure 4.0. Agregue estas dependencias eliminadas al proyecto para evitar bloqueos accidentales.
En la tabla siguiente se muestran las dependencias quitadas:
| Dependencias eliminadas | Descripción |
|---|---|
com.fasterxml.jackson.core:jackson-databind |
Agregue esta dependencia al proyecto si es necesario. |
io.projectreactor.netty:reactor-netty |
Agregue esta dependencia al proyecto si es necesario. |
org.springframework.boot:spring-boot-starter-validation |
Agregue esta dependencia al proyecto si es necesario. |
org.springframework.boot:spring-boot-starter-webflux |
Agregue esta dependencia al proyecto si es necesario. |
Cambios en la configuración del SDK
En esta sección se incluyen los cambios sobre las propiedades agregadas, eliminadas y modificadas.
- Los dos puntos siguientes son los principales para prestar atención a:
- El prefijo de todos los nombres de propiedad de configuración ha cambiado de
azure.activedirectoryaspring.cloud.azure.active-directory. - Se agrega la nueva propiedad
spring.cloud.azure.active-directory.enabledpara habilitar o deshabilitar las funciones relacionadas con Microsoft Entra. El valor predeterminado esfalse.
En la tabla siguiente se muestran las asignaciones de propiedades entre azure-spring-boot-starter-active-directory y spring-cloud-azure-starter-active-directory:
| Propiedades heredadas | Propiedades modernas |
|---|---|
azure.activedirectory.app-id-uri |
spring.cloud.azure.active-directory.app-id-uri |
azure.activedirectory.application-type |
spring.cloud.azure.active-directory.application-type |
azure.activedirectory.authorization-clients |
spring.cloud.azure.active-directory.authorization-clients |
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.authorization-grant-type |
spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.authorization-grant-type |
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.on-demand |
spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.on-demand |
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.scopes |
spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.scopes |
azure.activedirectory.authenticate-additional-parameters |
spring.cloud.azure.active-directory.authenticate-additional-parameters |
azure.activedirectory.base-uri |
spring.cloud.azure.active-directory.profile.environment.active-directory-endpoint |
azure.activedirectory.client-id |
spring.cloud.azure.active-directory.credential.client-id |
azure.activedirectory.client-secret |
spring.cloud.azure.active-directory.credential.client-secret |
azure.activedirectory.graph-membership-uri |
Consulte la tabla siguiente para obtener más información. |
azure.activedirectory.jwt-connect-timeout |
spring.cloud.azure.active-directory.jwt-connect-timeout |
azure.activedirectory.jwt-read-timeout |
spring.cloud.azure.active-directory.jwt-read-timeout |
azure.activedirectory.jwt-size-limit |
spring.cloud.azure.active-directory.jwt-size-limit |
azure.activedirectory.jwk-set-cache-lifespan |
spring.cloud.azure.active-directory.jwk-set-cache-lifespan |
azure.activedirectory.jwk-set-cache-refresh-time |
spring.cloud.azure.active-directory.jwk-set-cache-refresh-time |
azure.activedirectory.post-logout-redirect-uri |
spring.cloud.azure.active-directory.post-logout-redirect-uri |
azure.activedirectory.session-stateless |
spring.cloud.azure.active-directory.session-stateless |
azure.activedirectory.redirect-uri-template |
spring.cloud.azure.active-directory.redirect-uri-template |
azure.activedirectory.resource-server.claim-to-authority-prefix-map |
spring.cloud.azure.active-directory.resource-server.claim-to-authority-prefix-map |
azure.activedirectory.resource-server.principal-claim-name |
spring.cloud.azure.active-directory.resource-server.principal-claim-name |
azure.activedirectory.tenant-id |
spring.cloud.azure.active-directory.profile.tenant-id |
azure.activedirectory.user-group.allowed-group-ids |
spring.cloud.azure.active-directory.user-group.allowed-group-ids |
azure.activedirectory.user-group.allowed-group-names |
spring.cloud.azure.active-directory.user-group.allowed-group-names |
azure.activedirectory.user-name-attribute |
spring.cloud.azure.active-directory.user-name-attribute |
El tipo de valor de las siguientes propiedades se cambia de
longaDuration:jwt-connect-timeoutjwt-read-timeoutjwk-set-cache-lifespan-
jwk-set-cache-refresh-time.
Se quitan las siguientes propiedades:
azure.activedirectory.allow-telemetryazure.activedirectory.user-group.enable-full-listazure.activedirectory.graph-base-uriazure.activedirectory.graph-membership-uri
Se agregan las siguientes propiedades:
spring.cloud.azure.active-directory.enabledspring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpointspring.cloud.azure.active-directory.user-group.use-transitive-members
Nota
La función de azure.activedirectory.graph-membership-uri se ha reemplazado por 2 propiedades: spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint y spring.cloud.azure.active-directory.user-group.use-transitive-members. La primera propiedad se usa para especificar el nombre de host y la segunda marca para usar la ruta de acceso url: v1.0/me/memberOf o v1.0/me/transitiveMemberOf.
Estos son algunos ejemplos de migración:
Ejemplo 1. Caso 1
Para compatibilidad heredada: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/memberOf
Para lo moderno:
spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint=https://graph.microsoft.com/+spring.cloud.azure.active-directory.user-group.use-transitive-members=false
Ejemplo 2. Caso 2
Para compatibilidad heredada: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/transitiveMemberOf
Para lo moderno:
spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint=https://graph.microsoft.com/+spring.cloud.azure.active-directory.user-group.use-transitive-members=true
Cambios de API
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-boot-starter-active-directory a spring-cloud-azure-starter-active-directory:
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.aad.webapi.AADJwtBearerTokenAuthenticationConverter |
com.azure.spring.cloud.autoconfigure.aad.AadJwtBearerTokenAuthenticationConverter |
com.azure.spring.aad.webapi.AADResourceServerProperties |
com.azure.spring.cloud.autoconfigure.aad.properties.AadResourceServerProperties |
com.azure.spring.aad.webapi.AADResourceServerWebSecurityConfigurerAdapter |
com.azure.spring.cloud.autoconfigure.aad.AadResourceServerWebSecurityConfigurerAdapter |
com.azure.spring.aad.webapp.AADWebSecurityConfigurerAdapter |
com.azure.spring.cloud.autoconfigure.aad.AadWebSecurityConfigurerAdapter |
com.azure.spring.aad.webapp.AuthorizationClientProperties |
com.azure.spring.cloud.autoconfigure.aad.properties.AuthorizationClientProperties |
com.azure.spring.aad.AADApplicationType |
com.azure.spring.cloud.autoconfigure.aad.properties.AadApplicationType |
com.azure.spring.aad.AADAuthorizationGrantType |
com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationGrantType |
com.azure.spring.aad.AADAuthorizationServerEndpoints |
com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthorizationServerEndpoints |
com.azure.spring.aad.AADClientRegistrationRepository |
com.azure.spring.cloud.autoconfigure.aad.AadClientRegistrationRepository |
com.azure.spring.aad.AADTrustedIssuerRepository |
com.azure.spring.cloud.autoconfigure.aad.AadTrustedIssuerRepository |
com.azure.spring.autoconfigure.aad.AADAppRoleStatelessAuthenticationFilter |
com.azure.spring.cloud.autoconfigure.aad.filter.AadAppRoleStatelessAuthenticationFilter |
com.azure.spring.autoconfigure.aad.AADAuthenticationFilter |
com.azure.spring.cloud.autoconfigure.aad.filter.AadAuthenticationFilter |
com.azure.spring.autoconfigure.aad.AADAuthenticationProperties |
com.azure.spring.cloud.autoconfigure.aad.properties.AadAuthenticationProperties |
com.azure.spring.autoconfigure.aad.UserPrincipal |
com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipal |
com.azure.spring.autoconfigure.aad.UserPrincipalManager |
com.azure.spring.cloud.autoconfigure.aad.filter.UserPrincipalManager |
En esta sección se enumeran las clases eliminadas de azure-spring-boot-starter-active-directory.
Se eliminó la clase obsoleta
com.azure.spring.aad.webapp.AADHandleConditionalAccessFiltercom.azure.spring.aad.webapi.validator.AADJwtAudienceValidatorcom.azure.spring.aad.webapi.validator.AADJwtClaimValidator
De azure-spring-boot-starter-active-directory-b2c a spring-cloud-azure-starter-active-directory-b2c
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-starter-active-directory-b2c desde la versión 3 de azure-spring-boot-starter-active-directory-b2c.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios de dependencia
Algunas dependencias innecesarias se incluyeron en los artefactos heredados, que hemos quitado en las bibliotecas modernas de Spring Cloud Azure 4.0. Asegúrese de agregar las dependencias eliminadas manualmente al proyecto para evitar un bloqueo accidental.
En la tabla siguiente se muestran las dependencias quitadas:
| Dependencias eliminadas | Descripción |
|---|---|
org.springframework.boot:spring-boot-starter-validation |
Incluya el inicio de validación si desea usar el validador hibernado. |
Cambios en la configuración del SDK
En esta sección se incluyen los cambios sobre las propiedades agregadas, eliminadas y modificadas.
- Los dos puntos siguientes son los principales para prestar atención a:
- Todos los nombres de propiedad de configuración cambiaron el prefijo de
azure.activedirectory.b2caspring.cloud.azure.active-directory.b2c. - Se agrega la nueva propiedad
spring.cloud.azure.active-directory.b2c.enabledpara permitir habilitar o deshabilitar Azure características relacionadas con AD B2C. El valor predeterminado es false.
En la tabla siguiente se muestran las asignaciones de propiedades de azure-spring-boot-starter-active-directory-b2c a spring-cloud-azure-starter-active-directory-b2c:
| Propiedades heredadas | Propiedades modernas |
|---|---|
azure.activedirectory.b2c.authenticate-additional-parameters |
spring.cloud.azure.active-directory.b2c.authenticate-additional-parameters |
azure.activedirectory.b2c.authorization-clients |
spring.cloud.azure.active-directory.b2c.authorization-clients |
azure.activedirectory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.authorization-grant-type |
spring.cloud.azure.active-directory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.authorization-grant-type |
azure.activedirectory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.scopes |
spring.cloud.azure.active-directory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.scopes |
azure.activedirectory.b2c.app-id-uri |
spring.cloud.azure.active-directory.b2c.app-id-uri |
azure.activedirectory.b2c.base-uri |
spring.cloud.azure.active-directory.b2c.base-uri |
azure.activedirectory.b2c.client-id |
spring.cloud.azure.active-directory.b2c.credential.client-id |
azure.activedirectory.b2c.client-secret |
spring.cloud.azure.active-directory.b2c.credential.client-secret |
azure.activedirectory.b2c.jwt-connect-timeout |
spring.cloud.azure.active-directory.b2c.jwt-connect-timeout |
azure.activedirectory.b2c.jwt-read-timeout |
spring.cloud.azure.active-directory.b2c.jwt-read-timeout |
azure.activedirectory.b2c.jwt-size-limit |
spring.cloud.azure.active-directory.b2c.jwt-size-limit |
azure.activedirectory.b2c.login-flow |
spring.cloud.azure.active-directory.b2c.login-flow |
azure.activedirectory.b2c.logout-success-url |
spring.cloud.azure.active-directory.b2c.logout-success-url |
azure.activedirectory.b2c.reply-url |
spring.cloud.azure.active-directory.b2c.reply-url |
azure.activedirectory.b2c.tenant-id |
spring.cloud.azure.active-directory.b2c.profile.tenant-id |
azure.activedirectory.b2c.user-flows |
spring.cloud.azure.active-directory.b2c.user-flows |
azure.activedirectory.b2c.user-name-attribute-name |
spring.cloud.azure.active-directory.b2c.user-name-attribute-name |
Se han quitado las propiedades de
azure-spring-boot-starter-active-directory-b2c:azure.activedirectory.b2c.allow-telemetryazure.activedirectory.b2c.tenant
El tipo de valor de las siguientes propiedades se cambia de
longaDuration:jwt-connect-timeoutjwt-read-timeout
Cambios de API
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-boot-starter-active-directory-b2c a spring-cloud-azure-starter-active-directory-b2c:
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.autoconfigure.b2c.AADB2CAuthorizationRequestResolver |
com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cAuthorizationRequestResolver |
com.azure.spring.autoconfigure.b2c.AADB2CJwtBearerTokenAuthenticationConverter |
com.azure.spring.cloud.autoconfigure.aad.AadJwtBearerTokenAuthenticationConverter |
com.azure.spring.autoconfigure.b2c.AADB2CLogoutSuccessHandler |
com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cLogoutSuccessHandler |
com.azure.spring.autoconfigure.b2c.AADB2COidcLoginConfigurer |
com.azure.spring.cloud.autoconfigure.aadb2c.AadB2COidcLoginConfigurer |
com.azure.spring.autoconfigure.b2c.AADB2CProperties |
com.azure.spring.cloud.autoconfigure.aadb2c.properties.AadB2cProperties |
com.azure.spring.autoconfigure.b2c.AADB2CTrustedIssuerRepository |
com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cTrustedIssuerRepository |
com.azure.spring.autoconfigure.b2c.AuthorizationClientProperties |
com.azure.spring.cloud.autoconfigure.aad.properties.AuthorizationClientProperties |
De azure-spring-boot-starter-cosmos a spring-cloud-azure-starter-data-cosmos
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-starter-data-cosmos desde la versión 3 de azure-spring-boot-starter-cosmos.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios en la configuración del SDK
Todos los nombres de propiedad de configuración cambiaron el prefijo de azure.cosmos a spring.cloud.azure.cosmos.
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-boot-starter-cosmos a spring-cloud-azure-starter-data-cosmos:
| Propiedades heredadas | Propiedades modernas |
|---|---|
azure.cosmos.connection-mode |
spring.cloud.azure.cosmos.connection-mode |
azure.cosmos.consistency-level |
spring.cloud.azure.cosmos.consistency-level |
azure.cosmos.database |
spring.cloud.azure.cosmos.database |
azure.cosmos.key |
spring.cloud.azure.cosmos.key |
azure.cosmos.populate-query-metrics |
spring.cloud.azure.cosmos.populate-query-metrics |
azure.cosmos.uri |
spring.cloud.azure.cosmos.endpoint |
De azure-spring-boot-starter-keyvault-secrets a spring-cloud-azure-starter-keyvault-secrets
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-starter-keyvault-secrets desde la versión 3 de azure-spring-boot-starter-keyvault-secrets.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios en la configuración del SDK
En esta sección se incluyen los cambios sobre las propiedades agregadas, eliminadas y modificadas.
En la tabla siguiente se muestran las asignaciones de propiedades de azure-spring-boot-starter-keyvault-secrets a spring-cloud-azure-starter-keyvault-secrets:
| Propiedades heredadas | Propiedades modernas |
|---|---|
azure.keyvault.case-sensitive-keys |
spring.cloud.azure.keyvault.secret.property-source[n].case-sensitive |
azure.keyvault.certificate-password |
spring.cloud.azure.keyvault.secret.property-source[n].credential.client-certificate-password |
azure.keyvault.certificate-path |
spring.cloud.azure.keyvault.secret.property-source[n].credential.client-certificate-path |
azure.keyvault.client-id |
spring.cloud.azure.keyvault.secret.property-source[n].credential.client-id |
azure.keyvault.client-key |
spring.cloud.azure.keyvault.secret.property-source[n].credential.client-secret |
azure.keyvault.enabled |
spring.cloud.azure.keyvault.secret.property-source-enabled y spring.cloud.azure.keyvault.secret.property-source-enabled |
azure.keyvault.order |
Ya no es compatible. Usa el orden de property-source[n] en su lugar. |
azure.keyvault.refresh-interval |
spring.cloud.azure.keyvault.secret.property-source[n].refresh-interval |
azure.keyvault.secret-keys |
spring.cloud.azure.keyvault.secret.property-source[n].secret-keys |
azure.keyvault.tenant-id |
spring.cloud.azure.keyvault.secret.property-source[n].profile.tenant-id |
azure.keyvault.uri |
spring.cloud.azure.keyvault.secret.property-source[n].endpoint |
Se han quitado las propiedades de
spring-cloud-azure-starter-keyvault-secrets:azure.keyvault.allow-telemetryazure.keyvault.order
Debe prestar atención a los siguientes puntos:
- Todos los nombres de propiedad de configuración cambiaron el prefijo de
azure.keyvaultaspring.cloud.azure.keyvault.secret. -
spring.cloud.azure.keyvault.secret.enabledse usa para habilitar todas las funcionalidades de Secret de Key Vault, incluida la configuración de los beans de cliente de Secret de Key Vault (comoSecretClientySecretAsyncClient) y la adición deKeyVaultPropertySourceenConfigurableEnvironment. -
spring.cloud.azure.keyvault.secret.property-source-enabledse usa para habilitar todos losKeyVaultPropertySource. Solo surtirá efecto cuandospring.cloud.azure.keyvault.secret.enabled=true. - Para Azure propiedades comunes(como
client,proxy,retry,credential,profile) y propiedades Key Vault(comoendpoint,service-version). Sispring.cloud.azure.keyvault.secret.property-sources[n].PROPERTY_NAMEno está configurado, se usaráspring.cloud.azure.keyvault.secret.PROPERTY_NAME. -
spring.cloud.azure.keyvault.secret.property-sources[n].resourcees específico de un recurso de Azure único, por lo que si no está configurado, no obtendrá valor de otros lugares.
De azure-spring-boot-starter-servicebus-jms a spring-cloud-azure-starter-servicebus-jms
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-starter-servicebus-jms desde la versión 3 de azure-spring-boot-starter-servicebus-jms.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios en la configuración del SDK
Se ha cambiado el tipo de configuración de spring.jms.servicebus.idle-timeout de long (milisegundos) al patrón Duration para mejorar la legibilidad.
De azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-blob
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-starter-storage-blob desde la versión 3 de azure-spring-boot-starter-storage.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios en la configuración del SDK
Todos los nombres de propiedad de configuración cambiaron el prefijo de azure.storage a spring.cloud.azure.storage.blob.
En la tabla siguiente se muestran las asignaciones de propiedades de azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-blob:
| Propiedades heredadas | Propiedades modernas |
|---|---|
azure.storage.account-name |
spring.cloud.azure.storage.blob.account-name |
azure.storage.account-key |
spring.cloud.azure.storage.blob.account-key |
azure.storage.blob-endpoint |
spring.cloud.azure.storage.blob.endpoint |
Cambios de API
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-blob:
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.autoconfigure.storage.resource.AzureStorageProtocolResolver |
com.azure.spring.core.resource.AzureStorageBlobProtocolResolver |
com.azure.spring.autoconfigure.storage.resource.BlobStorageResource |
com.azure.spring.core.resource.StorageBlobResource |
com.azure.spring.autoconfigure.storage.resource.AzureStorageResourcePatternResolver |
com.azure.spring.core.resource.AzureStorageBlobProtocolResolver |
De azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-file-share
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-starter-storage-file-share desde la versión 3 de azure-spring-boot-starter-storage.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios en la configuración del SDK
Todos los nombres de propiedad de configuración cambiaron el prefijo de azure.storage a spring.cloud.azure.storage.fileshare.
En la tabla siguiente se muestran las asignaciones de propiedades de azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-file-share:
| Propiedades heredadas | Propiedades modernas |
|---|---|
azure.storage.account-name |
spring.cloud.azure.storage.fileshare.account-name |
azure.storage.account-key |
spring.cloud.azure.storage.fileshare.account-key |
azure.storage.file-endpoint |
spring.cloud.azure.storage.fileshare.endpoint |
Cambios de API
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-file-share:
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.autoconfigure.storage.resource.AzureStorageProtocolResolver |
com.azure.spring.core.resource.AzureStorageFileProtocolResolver |
com.azure.spring.autoconfigure.storage.resource.FileStorageResource |
com.azure.spring.core.resource.StorageFileResource |
com.azure.spring.autoconfigure.storage.resource.AzureStorageResourcePatternResolver |
com.azure.spring.core.resource.AzureStorageFileProtocolResolver |
De azure-spring-cloud-starter-eventhubs a spring-cloud-azure-starter-integration-eventhubs
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-starter-integration-eventhubs desde la versión 2 de azure-spring-cloud-starter-eventhubs.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios en la configuración del SDK
Importante
El prefijo de configuración se ha cambiado de spring.cloud.azure.eventhub a spring.cloud.azure.eventhubs.
Para ver los cambios en las entradas secundarias de este prefijo, consulte las tablas siguientes:
En la tabla siguiente se muestran las asignaciones de propiedades de azure-spring-cloud-starter-eventhubs a spring-cloud-azure-starter-integration-eventhubs:
| Propiedades heredadas | Propiedades modernas |
|---|---|
spring.cloud.azure.resource-group |
spring.cloud.azure.eventhubs.resource.resource-group |
spring.cloud.azure.eventhub.namespace |
spring.cloud.azure.eventhubs.namespace |
spring.cloud.azure.eventhub.connection-string |
spring.cloud.azure.eventhubs.connection-string |
spring.cloud.azure.eventhub.checkpoint-storage-account |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
spring.cloud.azure.eventhub.checkpoint-access-key |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
spring.cloud.azure.eventhub.checkpoint-container |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
Por ejemplo, cambie de:
spring:
cloud:
azure:
eventhub:
connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
checkpoint-storage-account: ${AZURE_CHECKPOINT_STORAGE_ACCOUNT_NAME}
checkpoint-access-key: ${AZURE_CHECKPOINT_ACCOUNT_KEY}
checkpoint-container: ${AZURE_CHECKPOINT_CONTAINER_NAME}
Para:
spring:
cloud:
azure:
eventhubs:
connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
processor:
checkpoint-store:
container-name: ${AZURE_STORAGE_CONTAINER_NAME}
account-name: ${AZURE_STORAGE_ACCOUNT_NAME}
account-key: ${AZURE_STORAGE_ACCOUNT_KEY}
Nota
Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación descrito en este procedimiento, como para bases de datos, memorias caché, mensajería o servicios de inteligencia artificial, requiere un grado de confianza muy alto en la aplicación y conlleva riesgos que no están presentes en otros flujos. Use este flujo solo cuando las opciones más seguras, como las identidades administradas para conexiones sin contraseña o sin claves, no sean viables. En el caso de las operaciones de máquina local, prefiera identidades de usuario para conexiones sin contraseña o sin claves.
Cambios de API
- Para consultar los cambios en las anotaciones de escucha, consulte la guía de migración de la biblioteca <<migration-azure-spring-cloud-messaging, azure-spring-cloud-messaging>>.
- Elimine
EventHubOperationtras mover la función de suscripción a la claseEventHubsMessageListenerContainery la función de envío aEventHubsTemplate. - Cambie el nombre de
EventHubInboundChannelAdaptercomoEventHubsInboundChannelAdapterpara mantener la coherencia con el servicio de Azure Event Hubs. - Cambie el constructor de
EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String)aEventHubsInboundChannelAdapter(EventHubsMessageListenerContainer)yEventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode). - Cambie
CheckpointConfigestilo de creación de instancias al constructor simple en lugar del estilo de compilación. - Elimine la API
EventHubOperation#setCheckpointConfig. Para establecer la configuración de punto de control para el adaptador de canal de entrada, los usuarios pueden llamar al métodoEventHubsContainerProperties#setCheckpointConfig. - Elimine la API
EventHubOperation#setBatchConsumerConfig. Para establecer la configuración de consumo por lotes para el adaptador de canal de entrada, los usuarios pueden llamar a los dos métodosEventHubsContainerProperties#getBatch#setMaxSizeyEventHubsContainerProperties#getBatch#setMaxWaitTimemientras tanto. - Para el modo de consumo por lotes, cambie los nombres de los encabezados de mensaje convertidos a partir de mensajes por lotes.
- Cambie el encabezado del mensaje de
azure_eventhub_enqueued_timeaazure_eventhubs_batch_converted_enqueued_time. - Cambie el encabezado del mensaje de
azure_eventhub_offsetaazure_eventhubs_batch_converted_offset. - Cambie el encabezado del mensaje de
azure_eventhub_sequence_numberaazure_eventhubs_batch_converted_sequence_number. - Cambie el encabezado del mensaje de
azure_partition_keyaazure_batch_converted_partition_key.
- Cambie el encabezado del mensaje de
- Al publicar mensajes en Event Hubs, omita todos los encabezados de mensaje convertidos de mensajes por lotes. Los encabezados incluyen:
- azure_batch_converted_partition_key
- azure_eventhubs_batch_converted_enqueued_time
- azure_eventhubs_batch_converted_offset
- azure_eventhubs_batch_converted_sequence_number
- azure_eventhubs_batch_converted_system_properties
- azure_eventhubs_batch_converted_application_properties
- El modo de punto de comprobación de
BATCHsolo funciona ahora en el modo de consumo por lotes, que se puede habilitar pasandoListenerMode.BATCHal constructor de EventHubsInboundChannelAdapter.
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-cloud-starter-eventhubs a spring-cloud-azure-starter-integration-eventhubs:
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.core.EventHubHeaders |
com.azure.spring.messaging.eventhubs.support.EventHubsHeaders |
com.azure.spring.integration.core.api.CheckpointConfig |
com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig |
com.azure.spring.integration.core.api.CheckpointMode |
com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode |
com.azure.spring.integration.core.api.reactor.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.eventhub.inbound.EventHubInboundChannelAdapter |
com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter |
Fragmento de código de ejemplo
EventHubsInboundChannelAdaptercódigo de ejemplo:Código heredado:
public class Demo { @Bean public EventHubInboundChannelAdapter messageChannelAdapter( @Qualifier("INPUT_CHANNEL") MessageChannel inputChannel, EventHubOperation eventhubOperation) { eventhubOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode (CheckpointMode.MANUAL).build()); EventHubInboundChannelAdapter adapter = new EventHubInboundChannelAdapter("EVENTHUB_NAME", eventhubOperation, "CONSUMER_GROUP"); adapter.setOutputChannel(inputChannel); return adapter; } }Código moderno:
public class Demo { @Bean public EventHubsMessageListenerContainer messageListenerContainer(EventHubsProcessorFactory processorFactory) { EventHubsContainerProperties containerProperties = new EventHubsContainerProperties(); containerProperties.setEventHubName("EVENTHUB_NAME"); containerProperties.setConsumerGroup("CONSUMER_GROUP"); CheckpointConfig config = new CheckpointConfig(CheckpointMode.MANUAL); containerProperties.setCheckpointConfig(config); return new EventHubsMessageListenerContainer(processorFactory, containerProperties); } @Bean public EventHubsInboundChannelAdapter messageChannelAdapter(@Qualifier("INPUT_CHANNEL") MessageChannel inputChannel, EventHubsMessageListenerContainer listenerContainer) { EventHubsInboundChannelAdapter adapter = new EventHubsInboundChannelAdapter(listenerContainer); adapter.setOutputChannel(inputChannel); return adapter; } }DefaultMessageHandlercódigo de ejemplo:Código heredado:
public class Demo { @Bean @ServiceActivator(inputChannel = "OUTPUT_CHANNEL") public MessageHandler messageSender(EventHubOperation eventhubOperation) { DefaultMessageHandler handler = new DefaultMessageHandler("EVENTHUB_NAME", eventhubOperation); handler.setSendCallback(new ListenableFutureCallback<Void>() { @Override public void onSuccess(Void result) { LOGGER.info("Message was sent successfully."); } @Override public void onFailure(Throwable ex) { LOGGER.error("There was an error sending the message.", ex); } }); return handler; } }Código moderno:
public class Demo { @Bean @ServiceActivator(inputChannel = "OUTPUT_CHANNEL") public MessageHandler messageSender(EventHubsTemplate eventhubOperation) { DefaultMessageHandler handler = new DefaultMessageHandler("EVENTHUB_NAME", eventhubOperation); handler.setSendCallback(new ListenableFutureCallback<Void>() { @Override public void onSuccess(Void result) { LOGGER.info("Message was sent successfully."); } @Override public void onFailure(Throwable ex) { LOGGER.error("There was an error sending the message.", ex); } }); return handler; } }
De azure-spring-integration-eventhubs a spring-integration-azure-eventhubs
Esta guía está pensada para ayudar en la migración a spring-integration-azure-eventhubs desde la versión 2 de azure-spring-integration-eventhubs.
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
Cambios de API
- Elimine
EventHubOperationtras mover la función de suscripción a la claseEventHubsMessageListenerContainery la función de envío aEventHubsTemplate. - Cambie el nombre de
EventHubInboundChannelAdaptercomoEventHubsInboundChannelAdapterpara mantener la coherencia con el servicio de Azure Event Hubs. - Cambie el constructor de
EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String)aEventHubsInboundChannelAdapter(EventHubsMessageListenerContainer)yEventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode). - Cambie
CheckpointConfigestilo de creación de instancias al constructor simple en lugar del estilo de compilación. - Elimine la API
EventHubOperation#setCheckpointConfig. Para establecer la configuración de punto de control para el adaptador de canal de entrada, los usuarios pueden llamar al métodoEventHubsContainerProperties#setCheckpointConfig. - Elimine la API
EventHubOperation#setBatchConsumerConfig. Para establecer la configuración de consumo por lotes para el adaptador de canal de entrada, los usuarios pueden llamar a los dos métodosEventHubsContainerProperties#getBatch#setMaxSizeyEventHubsContainerProperties#getBatch#setMaxWaitTimemientras tanto. - Para el modo de consumo por lotes, cambie los nombres de los encabezados de mensaje convertidos a partir de mensajes por lotes.
- Cambie el encabezado del mensaje de
azure_eventhub_enqueued_timeaazure_eventhubs_batch_converted_enqueued_time. - Cambie el encabezado del mensaje de
azure_eventhub_offsetaazure_eventhubs_batch_converted_offset. - Cambie el encabezado del mensaje de
azure_eventhub_sequence_numberaazure_eventhubs_batch_converted_sequence_number. - Cambie el encabezado del mensaje de
azure_partition_keyaazure_batch_converted_partition_key.
- Cambie el encabezado del mensaje de
- Al publicar mensajes en Event Hubs, omita todos los encabezados de mensaje convertidos de mensajes por lotes. Los encabezados incluyen:
- azure_batch_converted_partition_key
- azure_eventhubs_batch_converted_enqueued_time
- azure_eventhubs_batch_converted_offset
- azure_eventhubs_batch_converted_sequence_number
- azure_eventhubs_batch_converted_system_properties
- azure_eventhubs_batch_converted_application_properties
- El modo de punto de comprobación de
BATCHsolo funciona ahora en el modo de consumo por lotes, que se puede habilitar pasandoListenerMode.BATCHal constructor de EventHubsInboundChannelAdapter.
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-integration-eventhubs a spring-integration-azure-eventhubs:
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.core.EventHubHeaders |
com.azure.spring.messaging.eventhubs.support.EventHubsHeaders |
com.azure.spring.integration.core.api.CheckpointConfig |
com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointConfig |
com.azure.spring.integration.core.api.CheckpointMode |
com.azure.spring.messaging.eventhubs.core.checkpoint.CheckpointMode |
com.azure.spring.integration.core.api.reactor.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.eventhub.inbound.EventHubInboundChannelAdapter |
com.azure.spring.integration.eventhubs.inbound.EventHubsInboundChannelAdapter |
De azure-spring-cloud-starter-servicebus a spring-cloud-azure-starter-integration-servicebus
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-starter-integration-servicebus desde la versión 2 de azure-spring-cloud-starter-servicebus.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios en la configuración del SDK
Para todas las opciones de configuración admitidas en spring-cloud-azure-starter-integration-servicebus, el prefijo permanece como spring.cloud.azure.servicebus.
En la tabla siguiente se muestran las asignaciones de propiedades de azure-spring-cloud-starter-servicebus a spring-cloud-azure-starter-integration-servicebus:
| Propiedades heredadas | Propiedades modernas |
|---|---|
spring.cloud.azure.resource-group |
spring.cloud.azure.servicebus.resource.resource-group |
spring.cloud.azure.servicebus.transport-type |
spring.cloud.azure.servicebus.client.transport-type |
spring.cloud.azure.servicebus.retry-options.retry-mode |
spring.cloud.azure.servicebus.retry.mode |
spring.cloud.azure.servicebus.retry-options.max-retries |
spring.cloud.azure.servicebus.retry.exponential.max-retries o spring.cloud.azure.servicebus.retry.fixed.max-retries debe configurarse en función de spring.cloud.azure.servicebus.retry.mode = fixed o exponential |
spring.cloud.azure.servicebus.retry-options.delay |
spring.cloud.azure.servicebus.retry.exponential.base-delay o spring.cloud.azure.servicebus.retry.fixed.delay debe configurarse en función de spring.cloud.azure.servicebus.retry.mode = fixed o exponential |
spring.cloud.azure.servicebus.retry-options.max-delay |
spring.cloud.azure.servicebus.retry.exponential.max-delay |
spring.cloud.azure.servicebus.retry-options.try-timeout |
spring.cloud.azure.servicebus.retry.try-timeout |
Cambios de API
- Elimine
ServiceBusQueueOperationyServiceBusTopicOperation, trasladando la función de suscripción a la claseServiceBusMessageListenerContainery la función de envío aServiceBusTemplate. - Elimine
ServiceBusQueueInboundChannelAdapteryServiceBusTopicInboundChannelAdapter, y mueva la funcionalidad de escucha de una entidad de cola/tema de Service Bus a ServiceBusInboundChannelAdapter. - Cambie el constructor de
ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String)aServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)yServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode). - Cambie el constructor de
ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String)aServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)yServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode). - Eliminar las API
ServiceBusQueueOperation#setCheckpointConfigyServiceBusTopicOperation#setCheckpointConfig. Para establecer la configuración del punto de control para el adaptador de canal de entrada, los usuarios pueden llamar al métodoServiceBusContainerProperties#setAutoCompleteen su lugar. Desactivar el modo de autocompletado equivale al modo de punto de controlMANUAL, y activarlo activará el modoRECORD. - Eliminar las API
ServiceBusQueueOperatio#setClientConfigyServiceBusTopicOperation#setClientConfig. Para configurar elServiceBusProcessorClientsubyacente usado por el adaptador de canal de entrada, los usuarios pueden usarServiceBusContainerPropertiesen su lugar. - Elimine la compatibilidad con
CompletableFutureenServiceBusTemplateyDefaultMessageHandler; admitaReactoren su lugar. - Agregue una nueva API de
ServiceBusTemplate#setDefaultEntityTypepara especificar el tipo de entidad, que es necesario cuando no se proporciona ningún bean dePropertiesSupplier<String, ProducerProperties>para elProducerProperties#entityType. - Quite el encabezado del mensaje
AzureHeaders.RAW_ID. UseServiceBusMessageHeaders.MESSAGE_IDen su lugar.
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-cloud-starter-servicebus a spring-cloud-azure-starter-integration-servicebus:
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders |
com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders |
com.azure.spring.integration.servicebus.converter.ServiceBusMessageConverter |
com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter |
com.azure.spring.integration.core.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.servicebus.inbound.ServiceBusQueueInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusTopicInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter |
Fragmento de código de ejemplo
ServiceBusInboundChannelAdaptercódigo de ejemplo:Código heredado de uso de
ServiceBusQueueInboundChannelAdapteroServiceBusTopicInboundChannelAdapter:public class Demo { @Bean public ServiceBusQueueInboundChannelAdapter queueMessageChannelAdapter( @Qualifier("INPUT_CHANNEL_NAME") MessageChannel inputChannel, ServiceBusQueueOperation queueOperation) { queueOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build()); ServiceBusQueueInboundChannelAdapter adapter = new ServiceBusQueueInboundChannelAdapter("QUEUE_NAME", queueOperation); adapter.setOutputChannel(inputChannel); return adapter; } @Bean public ServiceBusTopicInboundChannelAdapter topicMessageChannelAdapter( @Qualifier("INPUT_CHANNEL_NAME") MessageChannel inputChannel, ServiceBusTopicOperation topicOperation) { topicOperation.setCheckpointConfig(CheckpointConfig.builder().checkpointMode(CheckpointMode.MANUAL).build()); ServiceBusTopicInboundChannelAdapter adapter = new ServiceBusTopicInboundChannelAdapter("TOPIC_NAME", topicOperation, "SUBSCRIPTION_NAME"); adapter.setOutputChannel(inputChannel); return adapter; } }Código moderno:
public class Demo { @Bean("queue-listener-container") public ServiceBusMessageListenerContainer messageListenerContainer(ServiceBusProcessorFactory processorFactory) { ServiceBusContainerProperties containerProperties = new ServiceBusContainerProperties(); containerProperties.setEntityName("QUEUE_NAME"); containerProperties.setAutoComplete(false); return new ServiceBusMessageListenerContainer(processorFactory, containerProperties); } @Bean public ServiceBusInboundChannelAdapter queueMessageChannelAdapter( @Qualifier("INPUT_CHANNEL") MessageChannel inputChannel, @Qualifier("queue-listener-container") ServiceBusMessageListenerContainer listenerContainer) { ServiceBusInboundChannelAdapter adapter = new ServiceBusInboundChannelAdapter(listenerContainer); adapter.setOutputChannel(inputChannel); return adapter; } @Bean("topic-listener-container") public ServiceBusMessageListenerContainer messageListenerContainer(ServiceBusProcessorFactory processorFactory) { ServiceBusContainerProperties containerProperties = new ServiceBusContainerProperties(); containerProperties.setEntityName("TOPIC_NAME"); containerProperties.setSubscriptionName("SUBSCRIPTION_NAME"); containerProperties.setAutoComplete(false); return new ServiceBusMessageListenerContainer(processorFactory, containerProperties); } @Bean public ServiceBusInboundChannelAdapter topicMessageChannelAdapter( @Qualifier("INPUT_CHANNEL") MessageChannel inputChannel, @Qualifier("topic-listener-container") ServiceBusMessageListenerContainer listenerContainer) { ServiceBusInboundChannelAdapter adapter = new ServiceBusInboundChannelAdapter(listenerContainer); adapter.setOutputChannel(inputChannel); return adapter; } }DefaultMessageHandlercódigo de ejemplo:Código heredado, tomando como ejemplo la cola:
public class Demo { @Bean @ServiceActivator(inputChannel = "OUTPUT_CHANNEL_NAME") public MessageHandler queueMessageSender(ServiceBusQueueOperation queueOperation) { DefaultMessageHandler handler = new DefaultMessageHandler("QUEUE_NAME", queueOperation); handler.setSendCallback(new ListenableFutureCallback<Void>() { @Override public void onSuccess(Void result) { LOGGER.info("Message was sent successfully."); } @Override public void onFailure(Throwable ex) { LOGGER.info("There was an error sending the message."); } }); return handler; } }Código moderno:
public class Demo { @Bean @ServiceActivator(inputChannel = "OUTPUT_CHANNEL_NAME") public MessageHandler queueMessageSender(ServiceBusTemplate serviceBusTemplate) { serviceBusTemplate.setDefaultEntityType(ServiceBusEntityType.QUEUE); DefaultMessageHandler handler = new DefaultMessageHandler("QUEUE_NAME", serviceBusTemplate); handler.setSendCallback(new ListenableFutureCallback<Void>() { @Override public void onSuccess(Void result) { LOGGER.info("Message was sent successfully for {}.", "QUEUE_NAME"); } @Override public void onFailure(Throwable ex) { LOGGER.info("There was an error sending the message."); } }); return handler; } }
De azure-spring-integration-servicebus a spring-integration-azure-servicebus
Esta guía está pensada para ayudar en la migración a spring-integration-azure-servicebus desde la versión 2 de azure-spring-integration-servicebus.
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
Cambios de API
- Elimine
ServiceBusQueueOperationyServiceBusTopicOperation, trasladando la función de suscripción a la claseServiceBusMessageListenerContainery la función de envío aServiceBusTemplate. - Elimine
ServiceBusQueueInboundChannelAdapteryServiceBusTopicInboundChannelAdapter, y mueva la funcionalidad de escucha de una entidad de cola/tema de Service Bus a ServiceBusInboundChannelAdapter. - Cambie el constructor de
ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String)aServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)yServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode). - Cambie el constructor de
ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String)aServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer)yServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode). - Elimine las API
ServiceBusQueueOperation#setCheckpointConfigyServiceBusTopicOperation#setCheckpointConfig. Para establecer la configuración del punto de control para el adaptador de canal de entrada, los usuarios pueden llamar al métodoServiceBusContainerProperties#setAutoCompleteen su lugar. Desactivar el modo de autocompletado equivale al modo de punto de controlMANUAL, y activarlo activará el modoRECORD. - Eliminar las API
ServiceBusQueueOperation#setClientConfigyServiceBusTopicOperation#setClientConfig. Para configurar elServiceBusProcessorClientsubyacente usado por el adaptador de canal de entrada, los usuarios pueden usarServiceBusContainerPropertiesen su lugar. - Elimine la compatibilidad con
CompletableFutureenServiceBusTemplateyDefaultMessageHandler; admitaReactoren su lugar. - Agregue una nueva API de
ServiceBusTemplate#setDefaultEntityTypepara especificar el tipo de entidad, que es necesario cuando no se proporciona ningún bean dePropertiesSupplier<String, ProducerProperties>para elProducerProperties#entityType. - Quite el encabezado del mensaje
AzureHeaders.RAW_ID. UseServiceBusMessageHeaders.MESSAGE_IDen su lugar.
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-integration-servicebus a spring-integration-azure-servicebus:
| Clase obsoleta | Clase moderna |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders |
com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders |
com.azure.spring.integration.servicebus.converter.ServiceBusMessageConverter |
com.azure.spring.messaging.servicebus.support.converter.ServiceBusMessageConverter |
com.azure.spring.integration.core.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.servicebus.inbound.ServiceBusQueueInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusTopicInboundChannelAdapter |
com.azure.spring.integration.servicebus.inbound.ServiceBusInboundChannelAdapter |
De azure-spring-cloud-starter-storage-queue a spring-cloud-azure-starter-integration-storage-queue
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-starter-integration-storage-queue desde la versión 2 de azure-spring-cloud-starter-storage-queue.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar una BOM para todas las bibliotecas de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios en la configuración del SDK
Todos los nombres de propiedad de configuración cambiaron el prefijo de spring.cloud.azure.storage a spring.cloud.azure.storage.queue.
En la tabla siguiente se muestran las asignaciones de propiedades de azure-spring-cloud-starter-storage-queue a spring-cloud-azure-starter-integration-storage-queue:
| Propiedades heredadas | Propiedades modernas |
|---|---|
spring.cloud.azure.storage.account |
spring.cloud.azure.storage.queue.account-name |
spring.cloud.azure.storage.access-key |
spring.cloud.azure.storage.queue.account-key |
spring.cloud.azure.storage.resource-group |
spring.cloud.azure.storage.queue.resource.resource-group |
Cambios de API
- Quite
StorageQueueOperationy proporcioneStorageQueueTemplateen su lugar. - Eliminar la configuración de
checkpoint-modeenStorageQueueTemplate, solo admitir el modoMANUAL.
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-cloud-starter-storage-queue a spring-cloud-azure-starter-integration-storage-queue.
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.storage.queue.converter.StorageQueueMessageConverter |
com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter |
com.azure.spring.integration.core.api.reactor.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
com.azure.spring.integration.storage.queue.StorageQueueTemplate |
com.azure.spring.storage.queue.core.StorageQueueTemplate |
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource |
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource |
De azure-spring-integration-storage-queue a spring-integration-azure-storage-queue
Esta guía está pensada para ayudar en la migración a spring-integration-azure-storage-queue desde la versión 2 de azure-spring-integration-storage-queue.
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar una BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
Cambios de API
- Quite
StorageQueueOperationy proporcioneStorageQueueTemplateen su lugar. - Elimine la configuración de
checkpoint-modeenStorageQueueTemplate; admita solo el modoMANUAL.
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-integration-storage-queue a spring-integration-azure-storage-queue.
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.storage.queue.converter.StorageQueueMessageConverter |
com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter |
com.azure.spring.integration.core.api.reactor.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
com.azure.spring.integration.storage.queue.StorageQueueTemplate |
com.azure.spring.storage.queue.core.StorageQueueTemplate |
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler |
com.azure.spring.integration.core.handler.DefaultMessageHandler |
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource |
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource |
De azure-spring-cloud-stream-binder-eventhubs a spring-cloud-azure-stream-binder-eventhubs
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-stream-binder-eventhubs desde la versión 2 de azure-spring-cloud-stream-binder-eventhubs.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios en la configuración del SDK
Importante
El prefijo de configuración se ha cambiado de spring.cloud.azure.eventhub a spring.cloud.azure.eventhubs.
Importante
Se cambia el nombre del tipo de enlazador de: eventhub a eventhubs.
Para ver los cambios en las entradas secundarias para el siguiente prefijo, consulte la tabla siguiente.
En la tabla siguiente se muestran las asignaciones de propiedades de azure-spring-cloud-stream-binder-eventhubs a spring-cloud-azure-stream-binder-eventhubs:
| Propiedades heredadas | Propiedades modernas |
|---|---|
spring.cloud.azure.resource-group |
spring.cloud.azure.eventhubs.resource.resource-group |
spring.cloud.azure.eventhub.namespace |
spring.cloud.azure.eventhubs.namespace |
spring.cloud.azure.eventhub.connection-string |
spring.cloud.azure.eventhubs.connection-string |
spring.cloud.azure.eventhub.checkpoint-storage-account |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
spring.cloud.azure.eventhub.checkpoint-access-key |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
spring.cloud.azure.eventhub.checkpoint-container |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.max-batch-size |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.batch.max-size |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.max-wait-time |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.batch.max-wait-time |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-mode |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.mode |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-count |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.count |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-interval |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.interval |
spring.cloud.stream.eventhub.bindings.binding-name.consumer.start-position |
spring.cloud.stream.eventhubs.bindings.binding-name.consumer.initial-partition-event-position |
Nota
El tipo de valor de la configuración de start-position también cambia de un tipo enumerado de com.azure.spring.integration.core.api.StartPosition a un map de StartPositionProperties para cada partición. Por lo tanto, la clave es el ID de partición y el valor es com.azure.spring.cloud.service.eventhubs.properties.StartPositionProperties, que incluye las propiedades de contrapartida, número de secuencia, fecha y hora de puesta en cola y si es inclusivo.
Ejemplos de migración de configuración
Para usar el cadena de conexión para la autenticación y migrar las propiedades mencionadas anteriormente, se enumeran los cambios de configuración siguientes:
Configuración heredada:
spring:
cloud:
azure:
eventhub:
connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
checkpoint-storage-account: ${AZURE_CHECKPOINT_STORAGE_ACCOUNT_NAME}
checkpoint-access-key: ${AZURE_CHECKPOINT_ACCOUNT_KEY}
checkpoint-container: ${AZURE_CHECKPOINT_CONTAINER_NAME}
stream:
eventhub:
bindings:
<binding-name>:
consumer:
max-batch-size: ${AZURE_MAX_BATCH_SIZE}
max-wait-time: ${AZURE_MAX_WAIT_TIME}
checkpoint-mode: ${AZURE_CHECKPOINT_MODE}
checkpoint-count: ${AZURE_CHECKPOINT_COUNT}
checkpoint-interval: ${AZURE_CHECKPOINT_INTERVAL}
start-position: EARLIEST
Configuración moderna:
spring:
cloud:
azure:
eventhubs:
connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
processor:
checkpoint-store:
container-name: ${AZURE_STORAGE_CONTAINER_NAME}
account-name: ${AZURE_STORAGE_ACCOUNT_NAME}
account-key: ${AZURE_STORAGE_ACCOUNT_KEY}
stream:
eventhubs:
bindings:
<binding-name>:
consumer:
batch:
max-size: ${AZURE_MAX_BATCH_SIZE}
max-wait-time: ${AZURE_MAX_WAIT_TIME}
checkpoint:
mode: ${AZURE_CHECKPOINT_MODE}
count: ${AZURE_CHECKPOINT_COUNT}
interval: ${AZURE_CHECKPOINT_INTERVAL}
initial-partition-event-position:
0:
offset: earliest
1:
sequence-number: 100
2:
enqueued-date-time: 2022-01-12T13:32:47.650005Z
4:
inclusive: false
Nota
Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación descrito en este procedimiento, como para bases de datos, memorias caché, mensajería o servicios de inteligencia artificial, requiere un grado de confianza muy alto en la aplicación y conlleva riesgos que no están presentes en otros flujos. Use este flujo solo cuando las opciones más seguras, como las identidades administradas para conexiones sin contraseña o sin claves, no sean viables. En el caso de las operaciones de máquina local, prefiera identidades de usuario para conexiones sin contraseña o sin claves.
Si usa entidades de seguridad en lugar de cadenas de conexión, en las versiones anteriores a la 4.0, la aplicación se conectará primero a Azure Resource Manager (ARM) con la entidad de seguridad proporcionada y, a continuación, recuperará la cadena de conexión del espacio de nombres especificado con ARM. Al final, la aplicación usa el cadena de conexión recuperado para conectarse a Azure Event Hubs. De este modo, se debe conceder a la entidad de seguridad proporcionada el rol de colaborador para obtener el espacio de nombres de Azure Event Hubs asociado.
En Azure Spring Apps 4.0, ofrecemos dos formas de usar identidades de seguridad para la autenticación. Uno sigue usando las entidades de seguridad para conectarse a ARM y obtener las cadenas de conexión donde se requiere el rol de Contributor para las entidades de seguridad. El otro aprovecha las entidades de seguridad para autenticarse en Microsoft Entra ID y luego conectarse directamente a Azure Event Hubs. En este caso, el rol de Contributor ya no es necesario, mientras que otros roles relacionados Data son necesarios para las operaciones de mensajería. Para asegurarse de que a la entidad de seguridad se le ha concedido el permiso suficiente para acceder al recurso de Azure, consulte Authorize access with Microsoft Entra ID.
Para la autenticación basada en ARM, tomando la entidad de servicio como ejemplo, la migración de configuración se muestra a continuación, donde el rol asignado no debe cambiar:
Configuración heredada:
spring:
cloud:
azure:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
tenant-id: <tenant>
resource-group: ${EVENTHUB_RESOURCE_GROUP}
eventhub:
namespace: ${EVENTHUB_NAMESPACE}
Nota
Los valores permitidos para tenant-id son: common, organizations, consumerso el identificador de inquilino. Para obtener más información sobre estos valores, consulte la sección Uso del punto de conexión incorrecto (cuentas personales y de organización) de Error AADSTS50020: La cuenta de usuario del proveedor de identidades no existe en el inquilino. Para obtener información sobre cómo convertir una aplicación de un solo inquilino en una aplicación multiinquilino, consulte Convertir una aplicación de un solo inquilino en una aplicación multiinquilino en Microsoft Entra ID.
Para la configuración moderna, se requieren las propiedades del identificador de suscripción de Azure y del grupo de recursos:
spring:
cloud:
azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
profile:
tenant-id: <tenant>
subscription-id: ${AZURE_SUBSCRIPTION_ID}
eventhubs:
namespace: ${EVENTHUB_NAMESPACE}
resource:
resource-group: ${RESOURCE_GROUP}
Nota
Los valores permitidos para tenant-id son: common, organizations, consumerso el identificador de inquilino. Para obtener más información sobre estos valores, consulte la sección Uso del punto de conexión incorrecto (cuentas personales y de organización) de Error AADSTS50020: La cuenta de usuario del proveedor de identidades no existe en el inquilino. Para obtener información sobre la conversión de la aplicación de un solo inquilino, consulte Conversión de una aplicación de inquilino único en varios inquilinos en Microsoft Entra ID.
También puede migrar a la autenticación y autorización con Microsoft Entra ID directamente, sin tener que pasar por ARM. Asegúrese de conceder al principal de seguridad los roles Data necesarios para las operaciones de mensajería. Los ejemplos de configuración de la entidad de servicio y la identidad administrada se enumeran a continuación:
Con una entidad de servicio
spring: cloud: azure: credential: client-id: ${AZURE_CLIENT_ID} client-secret: ${AZURE_CLIENT_SECRET} profile: tenant-id: <tenant> eventhubs: namespace: ${EVENTHUB_NAMESPACE}
Nota
Los valores permitidos para tenant-id son: common, organizations, consumerso el identificador de inquilino. Para obtener más información sobre estos valores, consulte la sección Uso del punto de conexión incorrecto (cuentas personales y de organización) de Error AADSTS50020: La cuenta de usuario del proveedor de identidades no existe en el inquilino. Para obtener información sobre cómo convertir su aplicación para un solo inquilino, consulte Convertir una aplicación para un solo inquilino en una aplicación multiinquilino en Microsoft Entra ID.
Con una identidad administrada
spring: cloud: azure: credential: managed-identity-enabled: true client-id: ${AZURE_MANAGED_IDENTITY_CLIENT_ID} # Only needed when using a user-assigned managed identity eventhubs: namespace: ${EVENTHUB_NAMESPACE}
Cambios de API
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-cloud-stream-binder-eventhubs a spring-cloud-azure-stream-binder-eventhubs.
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.integration.core.api.reactor.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.core.EventHubHeaders |
com.azure.spring.messaging.eventhubs.support.EventHubsHeaders |
De azure-spring-cloud-stream-binder-servicebus-* a spring-cloud-azure-stream-binder-servicebus
Esta guía está pensada para ayudar en la migración a spring-cloud-azure-stream-binder-servicebus desde la versión 2 de azure-spring-cloud-stream-binder-servicebus-queue o azure-spring-cloud-stream-binder-servicebus-topic.
Para obtener información general, use los vínculos siguientes:
- Para obtener información general sobre los cambios de la versión 4.0, consulte las secciones introducción
y Ventajas de migración . - Para obtener más información sobre los cambios de estrategia en la nomenclatura del proyecto, consulte la sección Cambios de nomenclatura.
- Para saber cómo usar un BOM para todas las librerías de Spring Cloud Azure, consulte la sección BOM.
- Para obtener información sobre cómo controlar la autenticación en Spring Cloud Azure 4.0, consulte la sección Cambios de autenticación.
- Para obtener información sobre cómo aprovechar
spring-boot-properties-migratordurante la migración, consulte la sección Configuración de cada SDK. - Para obtener más información sobre los cambios en la configuración global y común, consulte la sección Configuraciones globales.
Cambios en la configuración del SDK
Importante
Las bibliotecas heredadas del enlazador son azure-spring-cloud-stream-binder-servicebus-queue y azure-spring-cloud-stream-binder-servicebus-topic, y ahora se han fusionado en una sola spring-cloud-azure-stream-binder-servicebus.
Importante
El tipo de aglutinante se obtiene combinando servicebus-queue y servicebus-topic para formar servicebus.
En la tabla siguiente se enumeran las nuevas propiedades de configuración de spring-cloud-azure-stream-binder-servicebus:
| Propiedades modernas | Descripción |
|---|---|
spring.cloud.stream.servicebus.bindings.binding-name.producer.entity-type |
Si usa la función de envío, debe establecer el tipo de entidad, que puede configurar como tema o cola. |
En la tabla siguiente se muestran las asignaciones de propiedades de azure-spring-cloud-stream-binder-servicebus-* a spring-cloud-azure-stream-binder-servicebus:
| Propiedades heredadas | Propiedades modernas |
|---|---|
spring.cloud.azure.resource-group |
spring.cloud.azure.servicebus.resource.resource-group |
spring.cloud.azure.servicebus.transport-type |
spring.cloud.azure.servicebus.client.transport-type |
spring.cloud.azure.servicebus.retry-options.retry-mode |
spring.cloud.azure.servicebus.retry.mode |
spring.cloud.azure.servicebus.retry-options.max-retries |
spring.cloud.azure.servicebus.retry.exponential.max-retries o spring.cloud.azure.servicebus.retry.fixed.max-retries debe configurarse en función de spring.cloud.azure.servicebus.retry.mode = fixed o exponential |
spring.cloud.azure.servicebus.retry-options.delay |
spring.cloud.azure.servicebus.retry.exponential.base-delay o spring.cloud.azure.servicebus.retry.fixed.delay debe configurarse en función de spring.cloud.azure.servicebus.retry.mode = fixed o exponential |
spring.cloud.azure.servicebus.retry-options.max-delay |
spring.cloud.azure.servicebus.retry.exponential.max-delay |
spring.cloud.azure.servicebus.retry-options.try-timeout |
spring.cloud.azure.servicebus.retry.try-timeout |
spring.cloud.stream.servicebus.queue.bindings.* |
spring.cloud.stream.servicebus.bindings.* |
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.concurrency |
spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions / max-concurrent-calls |
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.checkpoint-mode |
spring.cloud.stream.servicebus.bindings.binding-name.consumer.auto-complete |
spring.cloud.stream.servicebus.topic.bindings.* |
spring.cloud.stream.servicebus.bindings.* |
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.concurrency |
spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions / max-concurrent-calls |
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.checkpoint-mode |
spring.cloud.stream.servicebus.bindings.binding-name.consumer.auto-complete |
Nota
La propiedad de simultaneidad se reemplazará por maxConcurrentSessions cuando sessionsEnabled sea true y maxConcurrentCalls cuando sessionsEnabled sea false.
Nota
Habilitar la opción de autocompletar es igual a RECORD el modo de punto de control y lo contrario al modo MANUAL.
Ejemplos de migración de configuración
Configuración heredada, tomando cola como ejemplo:
spring:
cloud:
azure:
servicebus:
connection-string: ${AZURE_SERVICEBUS_BINDER_CONNECTION_STRING}
stream:
function:
definition: consume;supply
bindings:
consume-in-0:
destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
supply-out-0:
destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
servicebus:
queue:
bindings:
consume-in-0:
consumer:
checkpoint-mode: MANUAL
Configuración moderna:
spring:
cloud:
azure:
servicebus:
connection-string: ${AZURE_SERVICEBUS_BINDER_CONNECTION_STRING}
stream:
function:
definition: consume;supply
bindings:
consume-in-0:
destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
supply-out-0:
destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
servicebus:
bindings:
consume-in-0:
consumer:
auto-complete: false
supply-out-0:
producer:
entity-type: queue #set as topic if needed
Nota
Microsoft recomienda usar el flujo de autenticación más seguro disponible. El flujo de autenticación descrito en este procedimiento, como para bases de datos, memorias caché, mensajería o servicios de inteligencia artificial, requiere un grado de confianza muy alto en la aplicación y conlleva riesgos que no están presentes en otros flujos. Use este flujo solo cuando las opciones más seguras, como las identidades administradas para conexiones sin contraseña o sin claves, no sean viables. En el caso de las operaciones de máquina local, prefiera identidades de usuario para conexiones sin contraseña o sin claves.
Si usa entidades de seguridad en lugar de cadenas de conexión, en las versiones anteriores a la 4.0, la aplicación se conectará primero a Azure Resource Manager (ARM) con la entidad de seguridad proporcionada y, a continuación, recuperará la cadena de conexión del espacio de nombres especificado con ARM. Al final, la aplicación usa el cadena de conexión recuperado para conectarse a Azure Service Bus. De este modo, se debe conceder a la entidad de seguridad proporcionada el rol de colaborador para obtener el espacio de nombres de Azure Service Bus asociado.
En Azure Spring Apps 4.0, ofrecemos dos formas de usar identidades de seguridad para la autenticación. Uno sigue usando las entidades de seguridad para conectarse a ARM y obtener las cadenas de conexión donde se requiere el rol de Contributor para las entidades de seguridad. La otra utiliza identidades de seguridad para autenticarse en Microsoft Entra ID y después conectarse directamente a Azure Service Bus. En este caso, el rol de Contributor ya no es necesario, mientras que otros roles relacionados Data son necesarios para las operaciones de mensajería. Para asegurarse de que a la entidad de seguridad se le ha concedido el permiso suficiente para acceder al recurso de Azure, consulte Authorize access with Microsoft Entra ID.
Para la autenticación basada en ARM, tomando la entidad de servicio como ejemplo, la migración de configuración se muestra a continuación, donde el rol asignado no debe cambiar:
Configuración heredada:
spring:
cloud:
azure:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
tenant-id: <tenant>
resource-group: ${SERVICEBUS_RESOURCE_GROUP}
servicebus:
namespace: ${SERVICEBUS_NAMESPACE}
Nota
Los valores permitidos para tenant-id son: common, organizations, consumerso el identificador de inquilino. Para obtener más información sobre estos valores, consulte la sección Uso del punto de conexión incorrecto (cuentas personales y de organización) de Error AADSTS50020: La cuenta de usuario del proveedor de identidades no existe en el inquilino. Para obtener información sobre cómo convertir su aplicación para un solo inquilino, consulte Convertir una aplicación para un solo inquilino en una aplicación multiinquilino en Microsoft Entra ID.
Para la configuración moderna, se requieren las propiedades del identificador de suscripción de Azure y del grupo de recursos:
spring:
cloud:
azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
profile:
tenant-id: <tenant>
subscription-id: ${AZURE_SUBSCRIPTION_ID}
servicebus:
namespace: ${SERVICEBUS_NAMESPACE}
resource:
resource-group: ${SERVICEBUS_RESOURCE_GROUP}
Nota
Los valores permitidos para tenant-id son: common, organizations, consumerso el identificador de inquilino. Para obtener más información sobre estos valores, consulte la sección Uso del punto de conexión incorrecto (cuentas personales y de organización) de Error AADSTS50020: La cuenta de usuario del proveedor de identidades no existe en el inquilino. Para obtener información sobre cómo convertir su aplicación para un solo inquilino, consulte Convertir una aplicación para un solo inquilino en una aplicación multiinquilino en Microsoft Entra ID.
También puede migrar a la autenticación y autorización con Microsoft Entra ID directamente, sin tener que pasar por ARM. Asegúrese de conceder al principal de seguridad los roles Data necesarios para las operaciones de mensajería. Los ejemplos de configuración de la entidad de servicio y la identidad administrada se enumeran a continuación:
Con una entidad de servicio
spring: cloud: azure: credential: client-id: ${AZURE_CLIENT_ID} client-secret: ${AZURE_CLIENT_SECRET} profile: tenant-id: <tenant> servicebus: namespace: ${SERVICEBUS_NAMESPACE}
Nota
Los valores permitidos para tenant-id son: common, organizations, consumerso el identificador de inquilino. Para obtener más información sobre estos valores, consulte la sección Uso del punto de conexión incorrecto (cuentas personales y de organización) de Error AADSTS50020: La cuenta de usuario del proveedor de identidades no existe en el inquilino. Para obtener información sobre cómo convertir una aplicación de un solo inquilino en una aplicación multiinquilino, consulte Convertir una aplicación de un solo inquilino en una aplicación multiinquilino en Microsoft Entra ID.
Con una identidad administrada
spring: cloud: azure: credential: managed-identity-enabled: true client-id: ${AZURE_MANAGED_IDENTITY_CLIENT_ID} # Only needed when using a user-assigned managed identity servicebus: namespace: ${SERVICEBUS_NAMESPACE}
Cambios de API
- Quite el encabezado del mensaje
AzureHeaders.RAW_ID. UseServiceBusMessageHeaders.MESSAGE_IDen su lugar.
En la tabla siguiente se muestran las asignaciones de clases de azure-spring-cloud-stream-binder-eventhubs a spring-cloud-azure-stream-binder-eventhubs.
| Clase heredada | Clase moderna |
|---|---|
com.azure.spring.integration.core.AzureHeaders |
com.azure.spring.messaging.AzureHeaders |
com.azure.spring.integration.servicebus.converter.ServiceBusMessageHeaders |
com.azure.spring.messaging.servicebus.support.ServiceBusMessageHeaders |
com.azure.spring.integration.core.api.Checkpointer |
com.azure.spring.messaging.checkpoint.Checkpointer |
azure-spring-cloud-messaging
La biblioteca de com.azure.spring:azure-spring-cloud-messaging no está lista para la versión 4.0. La función de las anotaciones del agente de escucha está en rediseño, por lo que actualmente no se admiten las anotaciones de @AzureMessageListener, @AzureMessageListenersy @EnableAzureMessaging.