Condividi tramite


Guida alla migrazione per Spring Cloud Azure 4.0

Questa guida consente di eseguire la migrazione ad Spring Cloud Azure 4.0 dalle librerie di Azure Spring legacy.

Introduzione

Verranno chiamate librerie il cui ID gruppo e ID artefatto seguono il modello com.azure.spring:spring-cloud-azure-* delle librerie moderne e quelle con modello com.azure.spring:azure-spring-boot-*, com.azure.spring:azure-spring-cloud-*o com.azure.spring:azure-spring-integration-* le librerie legacy .

Questa guida si concentrerà sui confronti side-by-side per configurazioni simili tra le librerie moderne e legacy.

Si presuppone la familiarità con com.azure.spring:azure-spring-boot-*o com.azure.spring:azure-spring-cloud-*com.azure.spring:azure-spring-integration-* il pacchetto .

Se non si ha familiarità con le librerie spring cloud di Azure 4.0, vedere la Guida per sviluppatori di Spring Cloud Azure invece di questa guida.

Vantaggi della migrazione

Una domanda naturale da porre quando si valuta se adottare una nuova versione o libreria è il suo vantaggio. Con la maturità e l'adozione di Azure da un gruppo di sviluppatori più diversificato, ci siamo concentrati sull'apprendimento dei modelli e delle procedure per supportare al meglio la produttività degli sviluppatori e per comprendere le lacune che le librerie di Azure di Spring Cloud hanno.

Sono state espresse diverse aree di feedback coerenti nelle librerie di Spring Cloud di Azure. L'aspetto più importante è che le librerie per diversi servizi di Azure non hanno abilitato il set completo di configurazioni. Inoltre, l'incoerenza della denominazione del progetto, gli ID artefatti, le versioni e le configurazioni hanno reso la curva di apprendimento ripida.

Per migliorare l'esperienza di sviluppo nelle librerie spring cloud di Azure, è stato introdotto un set di linee guida per la progettazione per garantire che le librerie di Azure Spring Cloud abbiano un aspetto naturale e idiotico rispetto all'ecosistema Spring. Altri dettagli sono disponibili nel documento di progettazione per gli interessati.

Spring Cloud Azure 4.0 offre l'esperienza condivisa tra librerie che si integrano con progetti Spring diversi, ad esempio Spring Boot, Spring Integration, Spring Cloud Stream e così via. L'esperienza condivisa include:

  • Distinta base unificata per includere tutte le librerie spring cloud di Azure 4.0.
  • Convenzione di denominazione coerente per gli artefatti.
  • Un modo unificato per configurare le credenziali, il proxy, i tentativi, l'ambiente cloud e le impostazioni del livello di trasporto.
  • Supporto di tutti i metodi di autenticazione supportati da un servizio di Azure o da Azure Service SDK.

Panoramica

Questa guida alla migrazione è costituita dalle sezioni seguenti:

  • Modifiche alla denominazione per Spring Cloud Azure 4.0
  • Modifiche all'artefatto: rinominato/aggiunto/eliminato
  • Modifiche alle dipendenze
  • Modifiche all'autenticazione
  • Proprietà di configurazione
  • Modifiche che causano un'interruzione dell'API
  • Modifiche alla libreria

Modifiche relative all'assegnazione dei nomi

Non c'è mai stato un nome coerente o ufficiale per chiamare tutte le librerie di Azure Spring Cloud. Alcuni di loro sono stati chiamati Azure Spring Boot e alcuni di loro Spring on Azure. Dalla versione 4.0 è stato iniziato a usare il nome Spring Cloud Azure del progetto per rappresentare tutte le librerie di Azure Spring.

DBA

È stato usato per spedire due MACCHINE virtuali per le librerie, e azure-spring-boot-bomazure-spring-cloud-dependencies, ma queste due macchine virtuali sono state combinate in un bom a partire dalla 4.0, ovvero .spring-cloud-azure-dependencies Aggiungere una voce nella dependencyManagement sezione del progetto per trarre vantaggio dalla gestione delle dipendenze.

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-dependencies</artifactId>
      <version>4.14.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

Nota

Se si usa Spring Boot 3.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 5.8.0. Per altre informazioni sulla spring-cloud-azure-dependencies versione, vedere Quale versione di Spring Cloud Azure è consigliabile usare.

Modifiche all'artefatto: rinominato/aggiunto/eliminato

Gli ID gruppo sono gli stessi per le librerie di Azure Spring Cloud moderne e legacy. Sono tutti com.azure.spring. Gli ID artefatti per le moderne librerie di Azure Spring Cloud sono stati modificati. In base al progetto Spring a cui appartiene, Spring Boot, Spring Integration o Spring Cloud Stream, il modello di ID artefatto può essere spring-cloud-azure-starter-[service], spring-integration-azure-[service]o spring-cloud-azure-stream-binder-[service]. Gli starter legacy per ognuno hanno un ID artefatto che segue il modello azure-spring-*. Questo offre un mezzo rapido e accessibile per comprendere, a colpo d'occhio, sia che si usino starter moderni o legacy.

Nel processo di sviluppo di Spring Cloud Azure 4.0, sono stati rinominati alcuni artefatti per renderli conformi alle nuove convenzioni di denominazione, sono stati eliminati alcuni artefatti in modo che la funzionalità possa essere inserita in un artefatto più appropriato e aggiunto alcuni nuovi artefatti per gestire meglio alcuni scenari.

La tabella seguente illustra i mapping tra l'ID artefatto legacy e l'ID artefatto moderno:

ID artefatto legacy ID artefatto moderno Descrizione
azure-spring-boot-starter spring-cloud-azure-starter Questo artefatto è stato eliminato con tutte le funzionalità da unire al nuovo spring-cloud-azure-starter artefatto.
azure-spring-boot-starter-active-directory spring-cloud-azure-starter-active-directory Rinominato l'artefatto.
azure-spring-boot-starter-active-directory-b2c spring-cloud-azure-starter-active-directory-b2c Rinominato l'artefatto.
azure-spring-boot-starter-cosmos spring-cloud-azure-starter-data-cosmos Rinominato l'artefatto per aggiungere data, che indica l'uso di Spring Data Azure Cosmos DB.
azure-spring-boot-starter-keyvault-certificates non applicabile Non incluso in questa versione, ma sarà supportato in una versione successiva.
azure-spring-boot-starter-keyvault-secrets spring-cloud-azure-starter-keyvault-secrets Rinominato l'artefatto.
azure-spring-boot-starter-servicebus-jms spring-cloud-azure-starter-servicebus-jms Rinominato l'artefatto.
azure-spring-boot-starter-storage spring-cloud-azure-starter-storage-blob
spring-cloud-azure-starter-storage-file-share
L'artefatto legacy contiene la funzionalità di Archiviazione BLOB e condivisione file, è stato inserito in due artefatti separati in 4.0, spring-cloud-azure-starter-storage-blob e spring-cloud-starter-storage-storage-file-share.
azure-spring-boot non applicabile Questo artefatto è stato eliminato con tutte le funzionalità da unire al nuovo spring-cloud-azure-autoconfigure artefatto.
azure-spring-cloud-autoconfigure non applicabile Questo artefatto è stato eliminato con tutte le funzionalità da unire al nuovo spring-cloud-azure-autoconfigure artefatto.
azure-spring-cloud-context non applicabile Questo artefatto è stato eliminato con tutte le funzionalità da unire ai nuovi spring-cloud-azure-autoconfigure elementi e spring-cloud-azure-resourcemanager .
azure-spring-cloud-messaging spring-messaging-azure L'annotazione del listener di messaggistica è stata eliminata.
azure-spring-cloud-starter-cache non applicabile Questo artefatto è stato eliminato, per l'uso di redis, è sufficiente aggiungere spring-boot-starter-data-redis, spring-boot-starter-cache, spring-cloud-azure-resourcemanager e spring-cloud-azure-starter. Per altre informazioni sull'utilizzo, vedere Supporto di Spring Cloud Azure Redis.
azure-spring-cloud-starter-eventhubs-kafka non applicabile Questo artefatto è stato eliminato, per l'uso di kafka, è sufficiente aggiungere spring kafka, spring-cloud-azure-resourcemanager e spring-cloud-azure-starter. Per altre informazioni sull'utilizzo, vedere Supporto di Spring Cloud Azure Kafka.
azure-spring-cloud-starter-eventhubs spring-cloud-azure-starter-integration-eventhubs Rinominato l'artefatto per aggiungere integration, che indica l'uso di Spring Integration con Hub eventi.
azure-spring-cloud-starter-servicebus spring-cloud-azure-starter-integration-servicebus Rinominato l'artefatto per aggiungere integration, che indica l'uso di Spring Integration con bus di servizio.
azure-spring-cloud-starter-storage-queue spring-cloud-azure-starter-integration-storage-queue Rinominato l'artefatto per aggiungere integration, che indica l'uso di Spring Integration con Archiviazione Queue.
azure-spring-cloud-storage non applicabile Questo artefatto è stato eliminato con tutte le funzionalità unite nel nuovo spring-cloud-azure-autoconfigure artefatto.
azure-spring-cloud-stream-binder-eventhubs spring-cloud-azure-stream-binder-eventhubs Questo artefatto è stato sottoposto a refactoring usando una nuova progettazione, principalmente spring-cloud-azure-stream-binder-eventhubs e spring-cloud-azure-stream-binder-eventhubs-core.
azure-spring-cloud-stream-binder-service-core spring-cloud-azure-stream-binder-servicebus-core Rinominato l'artefatto.
azure-spring-cloud-stream-binder-servicebus-queue spring-cloud-azure-stream-binder-servicebus Questo artefatto è stato eliminato con tutte le funzionalità da unire nell'artefatto spring-cloud-azure-stream-binder-servicebus .
azure-spring-cloud-stream-binder-servicebus-topic spring-cloud-azure-stream-binder-servicebus Questo artefatto è stato eliminato con tutte le funzionalità da unire nell'artefatto spring-cloud-azure-stream-binder-servicebus .
azure-spring-integration-core spring-integration-azure-core Rinominato l'artefatto.
azure-spring-integration-eventhubs spring-integration-azure-eventhubs Rinominare l'artefatto.
azure-spring-integration-servicebus spring-integration-azure-servicebus Rinominare l'artefatto.
azure-spring-integration-storage-queue spring-integration-azure-storage-queue Rinominare l'artefatto.
non applicabile spring-cloud-azure-attuatore L'artefatto dell'attuatore spring cloud di Azure appena aggiunto.
non applicabile spring-cloud-azure-override-autoconfigure L'artefatto di configurazione automatica dell'attuatore spring cloud di Azure appena aggiunto, inclusa la configurazione automatica per l'attuatore.
non applicabile spring-cloud-azure-autoconfigure È stato appena aggiunto l'elemento Spring Cloud Azure AutoConfigure, tra cui tutte le configurazioni automatica per i client SDK, il supporto spring security, il supporto spring data e il supporto spring integration.
non applicabile spring-cloud-azure-core È stato appena aggiunto l'elemento Spring Cloud Azure Core, incluse tutte le funzionalità di base.
non applicabile spring-cloud-azure-resourcemanager Nuovo artefatto di Resource Manager aggiunto. Si tratta della libreria Core che usa Azure Resource Manager per leggere i metadati e creare risorse.
non applicabile spring-cloud-azure-service Nuovo artefatto del servizio Spring Cloud di Azure, incluse le astrazioni per i servizi di Azure.
non applicabile spring-cloud-azure-starter-appconfiguration Appena aggiunto starter per l'uso di app Azure client di Configuration SDK.
non applicabile spring-cloud-azure-starter-cosmos Appena aggiunto starter per l'uso del client Azure Cosmos DB SDK.
non applicabile spring-cloud-azure-starter-eventhubs Appena aggiunto starter per l'uso di Hub eventi di Azure client SDK.
non applicabile spring-cloud-azure-starter-servicebus Appena aggiunto starter per l'uso di bus di servizio di Azure client SDK.
non applicabile spring-cloud-azure-starter-storage-blob Nuovo strumento di avvio per l'uso di Archiviazione di Azure client BLOB SDK.
non applicabile spring-cloud-azure-starter-storage-file-share Appena aggiunto starter per l'uso di Archiviazione di Azure client di File Share SDK.
non applicabile spring-cloud-azure-starter-storage-queue Appena aggiunto lo starter per l'uso di Archiviazione di Azure client queue SDK.
non applicabile spring-cloud-azure-starter-stream-eventhubs Appena aggiunto starter per l'uso di Hub eventi di Azure Spring Cloud Stream Binder.
non applicabile spring-cloud-azure-starter-stream-servicebus Strumento di avvio appena aggiunto per l'uso di bus di servizio di Azure Spring Cloud Stream Binder
non applicabile spring-cloud-azure-stream-binder-eventhubs-core È stato appena aggiunto l'artefatto core di Spring Cloud Stream per Hub eventi di Azure.

Modifiche alle dipendenze

Alcune dipendenze non necessarie sono state incluse negli artefatti legacy, che sono state rimosse nelle moderne librerie di Spring Cloud Azure 4.0. Assicurarsi di aggiungere manualmente le dipendenze rimosse al progetto per evitare arresti anomali.

Le librerie con modifiche alle dipendenze includono:

Modifiche all'autenticazione

Spring Cloud Azure 4.0 supporta tutti i metodi di autenticazione supportati da ogni SDK di servizio di Azure. Consente di configurare le credenziali di un token globale e di fornire le credenziali del token a ogni livello di servizio. Tuttavia, non è necessario configurare Spring Cloud Azure 4.0 perché può applicare le credenziali archiviate in un ambiente di sviluppo locale o un'identità gestita in Servizi di Azure. Assicurarsi che all'entità sia stata concessa un'autorizzazione sufficiente per accedere alle risorse di Azure di destinazione.

Nota

Quando si assegnano ruoli alle entità di sicurezza per interagire con i servizi di messaggistica di Azure, i Data ruoli correlati sono necessari per eseguire operazioni di messaggistica. Per Hub eventi di flusso di Azure Spring Apps/bus di servizio librerie binder, Contributor il ruolo è necessario quando è necessaria la funzione di creazione automatica delle risorse. Per altre informazioni, vedere Ruoli predefiniti di Azure.

Una credenziale concatenata, il DefaultAzureCredential bean è configurato automaticamente per impostazione predefinita e verrà usato da tutti i componenti se non vengono specificate altre informazioni di autenticazione. Per altre informazioni, vedere la sezione DefaultAzureCredential della libreria client di Identità di Azure per Java.

Proprietà di configurazione

Migrazione delle proprietà

È stato creato un file additional-spring-configuration-metadata.json per uniformare la migrazione delle proprietà quando si usa con spring-boot-properties-migrator. Aggiungere prima di tutto la seguente proprietà migratrice all'applicazione:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-properties-migrator</artifactId>
    <scope>runtime</scope>
</dependency>

In alternativa, se si usa Gradle:

runtime("org.springframework.boot:spring-boot-properties-migrator")

Se si esegue l'app, verranno identificate le proprietà che non sono più gestite da Spring Cloud Azure. Se è presente una sostituzione, verrà temporaneamente mappata la proprietà con un avviso. Se non è presente una sostituzione, verrà restituita una segnalazione errori. In entrambi i casi, la configurazione deve essere aggiornata e la dipendenza rimossa dopo aver aggiornato la configurazione.

Prima di procedere, è consigliabile usare la funzionalità di ricerca dell'IDE per verificare che non si usi una delle proprietà di cui è stata eseguita la migrazione in un test di integrazione.

Nota

In questa modifica sono state modificate molte proprietà di configurazione. L'uso spring-boot-properties-migrator di consente di semplificare la migrazione.

Configurazioni globali

Il moderno spring-cloud-azure-starter consente di definire le proprietà applicabili a tutti gli SDK di Azure nello spazio dei nomi spring.cloud.azure. Questa funzionalità non è supportata nell'oggetto legacy azure-spring-boot-starter. Le configurazioni globali possono essere suddivise in cinque categorie, illustrate nella tabella seguente:

Prefisso Descrizione
spring.cloud.azure.client Configura i client di trasporto sotto ogni SDK di Azure.
spring.cloud.azure.credential Configura come eseguire l'autenticazione con Microsoft Entra ID.
spring.cloud.azure.profile Configura l'ambiente cloud di Azure.
spring.cloud.azure.proxy Configura le opzioni del proxy, si applicano a tutti i client Azure SDK.
spring.cloud.azure.retry Configura le opzioni di ripetizione dei tentativi, si applicano a tutti i client Azure SDK. Le opzioni di ripetizione dei tentativi hanno supportato parte degli SDK, non esiste alcun spring.cloud.azure.cosmos.retryelemento .

Per un elenco completo delle configurazioni, vedere Proprietà di configurazione di Spring Cloud Azure.

Configurare ogni SDK

Per informazioni dettagliate sulle opzioni di configurazione a livello di SDK, usare i collegamenti seguenti:

Modifiche che causano un'interruzione dell'API

Per informazioni dettagliate sulle modifiche di rilievo dell'API in ogni libreria, usare i collegamenti seguenti:

Modifiche alla libreria

Le modifiche di rilievo in ogni libreria vengono introdotte nel modo seguente.

Da azure-spring-boot-starter a spring-cloud-azure-starter

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter dalla versione 3 di azure-spring-boot-starter.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alle dipendenze

Alcune dipendenze non necessarie sono state incluse negli artefatti legacy, che sono state rimosse nelle moderne librerie di Spring Cloud Azure 4.0. Assicurarsi di aggiungere manualmente le dipendenze rimosse al progetto per evitare arresti anomali involontari.

La tabella seguente illustra le dipendenze rimosse:

Dipendenze rimosse Descrizione
org.springframework.boot:spring-boot-starter-validation Includere lo starter di convalida se si vuole usare Il validator hibernate.

Da azure-spring-boot-starter-active-directory a spring-cloud-azure-starter-active-directory

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter-active-directory dalla versione 3 di azure-spring-boot-starter-active-directory.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alle dipendenze

Alcune dipendenze non necessarie nell'artefatto legacy sono state rimosse dalla libreria moderna di Spring Cloud Azure 4.0. Aggiungere queste dipendenze rimosse al progetto per evitare arresti anomali accidentali.

La tabella seguente illustra le dipendenze rimosse:

Dipendenze rimosse Descrizione
com.fasterxml.jackson.core:jackson-databind Aggiungere questa dipendenza al progetto, se necessario.
io.projectreactor.netty:reactor-netty Aggiungere questa dipendenza al progetto, se necessario.
org.springframework.boot:spring-boot-starter-validation Aggiungere questa dipendenza al progetto, se necessario.
org.springframework.boot:spring-boot-starter-webflux Aggiungere questa dipendenza al progetto, se necessario.

Modifiche alla configurazione dell'SDK

Questa sezione include le modifiche apportate alle proprietà aggiunte, rimosse e modificate.

  • I due punti seguenti sono i principali per prestare attenzione a:
  1. Il prefisso di tutti i nomi delle proprietà di configurazione è stato modificato da azure.activedirectory a spring.cloud.azure.active-directory.
  2. Viene aggiunta una nuova proprietà spring.cloud.azure.active-directory.enabled per abilitare/disabilitare le funzionalità correlate a Microsoft Entra. Il valore predefinito è false.

Nella tabella seguente vengono illustrati i mapping delle proprietà tra azure-spring-boot-starter-active-directory e spring-cloud-azure-starter-active-directory:

Proprietà legacy Proprietà moderne
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 Per altre informazioni, vedere la tabella seguente.
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-durata 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-senza stato 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
  • Il tipo di valore delle proprietà seguenti viene modificato da long a Duration:

    • jwt-connect-timeout
    • jwt-read-timeout
    • jwk-set-cache-lifespan
    • jwk-set-cache-refresh-time.
  • Vengono rimosse le proprietà seguenti:

    • azure.activedirectory.allow-telemetry
    • azure.activedirectory.user-group.enable-full-list
    • azure.activedirectory.graph-base-uri
    • azure.activedirectory.graph-membership-uri
  • Vengono aggiunte le proprietà seguenti:

    • spring.cloud.azure.active-directory.enabled
    • spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint
    • spring.cloud.azure.active-directory.user-group.use-transitive-members

Nota

La funzione di azure.activedirectory.graph-membership-uri è stata sostituita da 2 proprietà: spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint e spring.cloud.azure.active-directory.user-group.use-transitive-members. La prima proprietà viene usata per specificare il nome host e il secondo flag per l'uso del percorso URL: v1.0/me/memberOf o v1.0/me/transitiveMemberOf.

Ecco alcuni esempi di migrazione:

  • Esempio 1. Case 1

    • Per legacy: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/memberOf

    • Per la versione moderna: 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

  • Esempio 2. Caso 2

    • Per legacy: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/transitiveMemberOf

    • Per la versione moderna: 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

Modifiche API

La tabella seguente illustra i mapping delle classi da azure-spring-boot-starter-active-directory a spring-cloud-azure-starter-active-directory:

Classe legacy Classe 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

Questa sezione elenca le classi rimosse da azure-spring-boot-starter-active-directory.

  • Classe legacy rimossa

    • com.azure.spring.aad.webapp.AADHandleConditionalAccessFilter
    • com.azure.spring.aad.webapi.validator.AADJwtAudienceValidator
    • com.azure.spring.aad.webapi.validator.AADJwtClaimValidator

Da azure-spring-boot-starter-active-directory-b2c a spring-cloud-azure-starter-active-directory-b2c

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter-active-directory-b2c dalla versione 3 di azure-spring-boot-starter-active-directory-b2c.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alle dipendenze

Alcune dipendenze non necessarie sono state incluse negli artefatti legacy, che sono state rimosse nelle moderne librerie di Spring Cloud Azure 4.0. Assicurarsi di aggiungere manualmente le dipendenze rimosse al progetto per evitare arresti anomali involontari.

La tabella seguente illustra le dipendenze rimosse:

Dipendenze rimosse Descrizione
org.springframework.boot:spring-boot-starter-validation Includere lo starter di convalida se si vuole usare Il validator hibernate.

Modifiche alla configurazione dell'SDK

Questa sezione include le modifiche apportate alle proprietà aggiunte, rimosse e modificate.

  • I due punti seguenti sono i principali per prestare attenzione a:
  1. Tutti i nomi delle proprietà di configurazione hanno modificato il prefisso da azure.activedirectory.b2c a spring.cloud.azure.active-directory.b2c.
  2. Viene aggiunta una nuova proprietà spring.cloud.azure.active-directory.b2c.enabled per consentire l'abilitazione o la disabilitazione delle funzionalità correlate ad Azure AD B2C. Il valore predefinito è false.

La tabella seguente illustra i mapping delle proprietà da azure-spring-boot-starter-active-directory-b2c a spring-cloud-azure-starter-active-directory-b2c:

Proprietà legacy Proprietà moderne
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
  • Proprietà rimosse da azure-spring-boot-starter-active-directory-b2c:

    • azure.activedirectory.b2c.allow-telemetry
    • azure.activedirectory.b2c.tenant
  • Il tipo di valore delle proprietà seguenti viene modificato da long a Duration:

    • jwt-connect-timeout
    • jwt-read-timeout

Modifiche API

La tabella seguente illustra i mapping delle classi da azure-spring-boot-starter-active-directory-b2c a spring-cloud-azure-starter-active-directory-b2c:

Classe legacy Classe 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

Da azure-spring-boot-starter-cosmos a spring-cloud-azure-starter-data-cosmos

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter-data-cosmos dalla versione 3 di azure-spring-boot-starter-cosmos.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alla configurazione dell'SDK

Tutti i nomi delle proprietà di configurazione hanno modificato il prefisso da azure.cosmos a spring.cloud.azure.cosmos.

La tabella seguente illustra i mapping delle classi da azure-spring-boot-starter-cosmos a spring-cloud-azure-starter-data-cosmos:

Proprietà legacy Proprietà moderne
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

Da azure-spring-boot-starter-keyvault-secrets a spring-cloud-azure-starter-keyvault-secrets

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter-keyvault-secrets dalla versione 3 di azure-spring-boot-starter-keyvault-secrets.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alla configurazione dell'SDK

Questa sezione include le modifiche apportate alle proprietà aggiunte, rimosse e modificate.

La tabella seguente illustra i mapping delle proprietà da azure-spring-boot-starter-keyvault-secrets a spring-cloud-azure-starter-keyvault-secrets:

Proprietà legacy Proprietà moderne
azure.keyvault.case-sensitive-keys spring.cloud.azure.keyvault.secret.property-source[n].distinzione tra maiuscole e minuscole
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 e spring.cloud.azure.keyvault.secret.property-source-enabled
azure.keyvault.order Non più supportata. Usare invece l'ordine in property-source[n].
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
  • Rimozione delle proprietà da spring-cloud-azure-starter-keyvault-secrets

azure.keyvault.allow-telemetry azure.keyvault.order

I punti seguenti è consigliabile prestare attenzione a:

  1. Tutti i nomi delle proprietà di configurazione hanno modificato il prefisso da azure.keyvault a spring.cloud.azure.keyvault.secret.
  2. spring.cloud.azure.keyvault.secret.enabled viene usato per abilitare tutte le funzionalità dei segreti dell'insieme di credenziali delle chiavi, includere configurare i fagioli client segreti dell'insieme di credenziali delle chiavi (ad esempio SecretClient e SecretAsyncClient) e aggiungere KeyVaultPropertySource in ConfigurableEnvironment.
  3. spring.cloud.azure.keyvault.secret.property-source-enabled viene usato per abilitare tutto KeyVaultPropertySource. Avrà effetto solo quando spring.cloud.azure.keyvault.secret.enabled=true.
  4. Per le proprietà comuni di Azure( ad esempio client, retryproxy, , credential, profile) e Key Vault (ad esempio endpoint, service-version). Se spring.cloud.azure.keyvault.secret.property-sources[n].PROPERTY_NAME non è configurato, spring.cloud.azure.keyvault.secret.PROPERTY_NAME verrà usato .
  5. spring.cloud.azure.keyvault.secret.property-sources[n].resource è specifico di una risorsa di Azure univoca, quindi se non è configurata, non otterrà valore da altre posizioni.

Da azure-spring-boot-starter-servicebus-jms a spring-cloud-azure-starter-servicebus-jms

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter-servicebus-jms dalla versione 3 di azure-spring-boot-starter-servicebus-jms.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alla configurazione dell'SDK

Tipo di configurazione per spring.jms.servicebus.idle-timeout modificato da long(millisecondi) a Duration modello per la leggibilità.

Da azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-blob

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter-storage-blob dalla versione 3 di azure-spring-boot-starter-storage.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alla configurazione dell'SDK

Tutti i nomi delle proprietà di configurazione hanno modificato il prefisso da azure.storage a spring.cloud.azure.storage.blob.

La tabella seguente illustra i mapping delle proprietà da azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-blob:

Proprietà legacy Proprietà moderne
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

Modifiche API

La tabella seguente illustra i mapping delle classi da azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-blob:

Classe legacy Classe moderna
com.azure.spring.autoconfigure.storage.resource.Azure Archiviazione ProtocolResolver com.azure.spring.core.resource.Azure Archiviazione BlobProtocolResolver
com.azure.spring.autoconfigure.storage.resource.Blob Archiviazione Resource com.azure.spring.core.resource. Archiviazione BlobResource
com.azure.spring.autoconfigure.storage.resource.Azure Archiviazione ResourcePatternResolver com.azure.spring.core.resource.Azure Archiviazione BlobProtocolResolver

Da azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-file-share

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter-storage-file-share dalla versione 3 di azure-spring-boot-starter-storage.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alla configurazione dell'SDK

Tutti i nomi delle proprietà di configurazione hanno modificato il prefisso da azure.storage a spring.cloud.azure.storage.fileshare.

La tabella seguente illustra i mapping delle proprietà da azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-file-share:

Proprietà legacy Proprietà moderne
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

Modifiche API

La tabella seguente illustra i mapping delle classi da azure-spring-boot-starter-storage a spring-cloud-azure-starter-storage-file-share:

Classe legacy Classe moderna
com.azure.spring.autoconfigure.storage.resource.Azure Archiviazione ProtocolResolver com.azure.spring.core.resource.Azure Archiviazione FileProtocolResolver
com.azure.spring.autoconfigure.storage.resource.File Archiviazione Resource com.azure.spring.core.resource. Archiviazione FileResource
com.azure.spring.autoconfigure.storage.resource.Azure Archiviazione ResourcePatternResolver com.azure.spring.core.resource.Azure Archiviazione FileProtocolResolver

Da azure-spring-cloud-starter-eventhubs a spring-cloud-azure-starter-integration-eventhubs

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter-integration-eventhubs dalla versione 2 di azure-spring-cloud-starter-eventhubs.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alla configurazione dell'SDK

Importante

Il prefisso di configurazione è stato modificato da spring.cloud.azure.eventhub a spring.cloud.azure.eventhubs.

Per le modifiche alle voci figlio per questo prefisso, vedere le tabelle seguenti:

Nella tabella seguente vengono illustrati i mapping delle proprietà da azure-spring-cloud-starter-eventhubs a spring-cloud-azure-starter-integration-eventhubs:

Proprietà legacy Proprietà moderne
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

Ad esempio, cambiare da:

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}

in:

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}

Modifiche API

  • Per le modifiche alle annotazioni del listener, vedere la guida alla migrazione della <<libreria migration-azure-spring-cloud-messaging, azure-spring-cloud-messaging>> .
  • Rilasciare EventHubOperation con la funzione di sottoscrizione spostata nella classe EventHubsMessageListenerContainer e la funzione di invio spostata in EventHubsTemplate.
  • Rinominare EventHubInboundChannelAdapter per EventHubsInboundChannelAdapter mantenere la coerenza con il servizio di Hub eventi di Azure.
  • Modificare il costruttore da EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String) a EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) e EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Modificare CheckpointConfig lo stile di creazione di istanze nel costruttore semplice anziché nello stile di compilazione.
  • Eliminare l'API EventHubOperation#setCheckpointConfig. Per impostare la configurazione del checkpoint per l'adattatore del canale in ingresso, gli utenti possono chiamare il metodo EventHubsContainerProperties#setCheckpointConfig.
  • Eliminare l'API EventHubOperation#setBatchConsumerConfig. Per impostare la configurazione che usa batch per l'adattatore del canale in ingresso, gli utenti possono chiamare i due metodi EventHubsContainerProperties#getBatch#setMaxSize e EventHubsContainerProperties#getBatch#setMaxWaitTime nel frattempo.
  • Per la modalità di utilizzo batch, modificare i nomi delle intestazioni dei messaggi convertiti da messaggi in batch.
    • Modificare l'intestazione del messaggio da azure_eventhub_enqueued_time a azure_eventhubs_batch_converted_enqueued_time.
    • Modificare l'intestazione del messaggio da azure_eventhub_offset a azure_eventhubs_batch_converted_offset.
    • Modificare l'intestazione del messaggio da azure_eventhub_sequence_number a azure_eventhubs_batch_converted_sequence_number.
    • Modificare l'intestazione del messaggio da azure_partition_key a azure_batch_converted_partition_key.
  • Quando si pubblicano messaggi in Hub eventi, ignorare tutte le intestazioni di messaggio convertite da messaggi in batch. Le intestazioni includono:
    • 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
  • La BATCH modalità checkpoint funziona solo in modalità di utilizzo batch, che può essere abilitata passando ListenerMode.BATCH al costruttore EventHubsInboundChannelAdapter.

La tabella seguente illustra i mapping delle classi da azure-spring-cloud-starter-eventhubs a spring-cloud-azure-starter-integration-eventhubs:

Classe legacy Classe 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

Frammento di codice di esempio

  • EventHubsInboundChannelAdapter codice di esempio:

    Codice legacy:

    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;
        }
    }
    

    Codice 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;
        }
    }
    
  • DefaultMessageHandler codice di esempio:

    Codice legacy:

    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;
        }
    }
    

    Codice 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;
        }
    }
    

Da azure-spring-integration-eventhubs a spring-integration-azure-eventhubs

Questa guida è progettata per facilitare la migrazione a spring-integration-azure-eventhubs dalla versione 2 di azure-spring-integration-eventhubs.

Modifiche API

  • Rilasciare EventHubOperation con la funzione di sottoscrizione spostata nella classe EventHubsMessageListenerContainer e la funzione di invio spostata in EventHubsTemplate.
  • Rinominare EventHubInboundChannelAdapter per EventHubsInboundChannelAdapter mantenere la coerenza con il servizio di Hub eventi di Azure.
  • Modificare il costruttore da EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String) a EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) e EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Modificare CheckpointConfig lo stile di creazione di istanze nel costruttore semplice anziché nello stile di compilazione.
  • Eliminare l'API EventHubOperation#setCheckpointConfig. Per impostare la configurazione del checkpoint per l'adattatore del canale in ingresso, gli utenti possono chiamare il metodo EventHubsContainerProperties#setCheckpointConfig.
  • Eliminare l'API EventHubOperation#setBatchConsumerConfig. Per impostare la configurazione che usa batch per l'adattatore del canale in ingresso, gli utenti possono chiamare i due metodi EventHubsContainerProperties#getBatch#setMaxSize e EventHubsContainerProperties#getBatch#setMaxWaitTime nel frattempo.
  • Per la modalità di utilizzo batch, modificare i nomi delle intestazioni dei messaggi convertiti da messaggi in batch.
    • Modificare l'intestazione del messaggio da azure_eventhub_enqueued_time a azure_eventhubs_batch_converted_enqueued_time.
    • Modificare l'intestazione del messaggio da azure_eventhub_offset a azure_eventhubs_batch_converted_offset.
    • Modificare l'intestazione del messaggio da azure_eventhub_sequence_number a azure_eventhubs_batch_converted_sequence_number.
    • Modificare l'intestazione del messaggio da azure_partition_key a azure_batch_converted_partition_key.
  • Quando si pubblicano messaggi in Hub eventi, ignorare tutte le intestazioni di messaggio convertite da messaggi in batch. Le intestazioni includono:
    • 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
  • La BATCH modalità checkpoint funziona solo in modalità di utilizzo batch, che può essere abilitata passando ListenerMode.BATCH al costruttore EventHubsInboundChannelAdapter.

La tabella seguente illustra i mapping delle classi da azure-spring-integration-eventhubs a spring-integration-azure-eventhubs:

Classe legacy Classe 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

Da azure-spring-cloud-starter-servicebus a spring-cloud-azure-starter-integration-servicebus

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter-integration-servicebus dalla versione 2 di azure-spring-cloud-starter-servicebus.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alla configurazione dell'SDK

Per tutte le opzioni di configurazione supportate in spring-cloud-azure-starter-integration-servicebus, il prefisso rimane come spring.cloud.azure.servicebus.

La tabella seguente illustra i mapping delle proprietà da azure-spring-cloud-starter-servicebus a spring-cloud-azure-starter-integration-servicebus:

Proprietà legacy Proprietà moderne
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, deve essere configurato a seconda di spring.cloud.azure.servicebus.retry.mode=fixed o esponenziale
spring.cloud.azure.servicebus.retry-options.delay Spring.cloud.azure.servicebus.retry.exponential.base-delay o spring.cloud.azure.servicebus.retry.fixed.delay, deve essere configurato a seconda di spring.cloud.azure.servicebus.retry.mode=fixed o esponenziale
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

Modifiche API

  • Eliminare ServiceBusQueueOperation e ServiceBusTopicOperation con la funzione di sottoscrizione spostata nella classe ServiceBusMessageListenerContainer e la funzione di invio è stata spostata in ServiceBusTemplate.
  • Eliminare ServiceBusQueueInboundChannelAdapter e ServiceBusTopicInboundChannelAdaptere spostare la funzionalità per restare in ascolto di un'entità coda/argomento bus di servizio in ServiceBusInboundChannelAdapter.
  • Modificare il costruttore da ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String) a ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) e ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Modificare il costruttore da ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String) a ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) e ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Eliminare le ServiceBusQueueOperation#setCheckpointConfig API e ServiceBusTopicOperation#setCheckpointConfig. Per impostare la configurazione del checkpoint per l'adattatore del canale in ingresso, gli utenti possono invece chiamare il metodo ServiceBusContainerProperties#setAutoComplete . Per disabilitare la modalità di completamento automatico equivale alla MANUAL modalità checkpoint e per abilitarla attiverà la RECORD modalità.
  • Eliminare le ServiceBusQueueOperatio#setClientConfig API e ServiceBusTopicOperation#setClientConfig. Per configurare l'oggetto sottostante ServiceBusProcessorClient utilizzato dall'adattatore del canale in ingresso, gli utenti possono usare ServiceBusContainerProperties invece.
  • Eliminare CompletableFuture il supporto in ServiceBusTemplate e DefaultMessageHandler, supportare Reactor invece .
  • Aggiungere una nuova API di per specificare il tipo di ServiceBusTemplate#setDefaultEntityType entità, necessario quando non viene fornito alcun bean di PropertiesSupplier&lt;String, ProducerProperties&gt; per .ProducerProperties#entityType
  • Eliminare l'intestazione AzureHeaders.RAW_IDdel messaggio . Utilizzare invece ServiceBusMessageHeaders.MESSAGE_ID.

La tabella seguente illustra i mapping delle classi da azure-spring-cloud-starter-servicebus a spring-cloud-azure-starter-integration-servicebus:

Classe legacy Classe 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

Frammento di codice di esempio

  • ServiceBusInboundChannelAdapter codice di esempio:

    Codice legacy di using ServiceBusQueueInboundChannelAdapter o ServiceBusTopicInboundChannelAdapter:

    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;
        }
    
    }
    

    Codice 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;
        }
    }
    
  • DefaultMessageHandler codice di esempio:

    Codice legacy, prendendo la coda come esempio:

    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;
        }
    }
    

    Codice 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;
        }
    }
    

Da azure-spring-integration-servicebus a spring-integration-azure-servicebus

Questa guida è progettata per facilitare la migrazione a spring-integration-azure-servicebus dalla versione 2 di azure-spring-integration-servicebus.

Modifiche API

  • Eliminare ServiceBusQueueOperation e ServiceBusTopicOperation con la funzione di sottoscrizione spostata nella classe ServiceBusMessageListenerContainer e la funzione di invio è stata spostata in ServiceBusTemplate.
  • Eliminare ServiceBusQueueInboundChannelAdapter e ServiceBusTopicInboundChannelAdaptere spostare la funzionalità per restare in ascolto di un'entità coda/argomento bus di servizio in ServiceBusInboundChannelAdapter.
  • Modificare il costruttore da ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String) a ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) e ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Modificare il costruttore da ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String) a ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) e ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Eliminare le ServiceBusQueueOperation#setCheckpointConfig API e ServiceBusTopicOperation#setCheckpointConfig. Per impostare la configurazione del checkpoint per l'adattatore del canale in ingresso, gli utenti possono invece chiamare il metodo ServiceBusContainerProperties#setAutoComplete . Per disabilitare la modalità di completamento automatico equivale alla MANUAL modalità checkpoint e per abilitarla attiverà la RECORD modalità.
  • Eliminare le ServiceBusQueueOperation#setClientConfig API e ServiceBusTopicOperation#setClientConfig. Per configurare l'oggetto sottostante ServiceBusProcessorClient utilizzato dall'adattatore del canale in ingresso, gli utenti possono usare ServiceBusContainerProperties invece.
  • Eliminare CompletableFuture il supporto in ServiceBusTemplate e DefaultMessageHandler, supportare Reactor invece .
  • Aggiungere una nuova API di per specificare il tipo di ServiceBusTemplate#setDefaultEntityType entità, necessario quando non viene fornito alcun bean di PropertiesSupplier&lt;String, ProducerProperties&gt; per .ProducerProperties#entityType
  • Eliminare l'intestazione AzureHeaders.RAW_IDdel messaggio . Utilizzare invece ServiceBusMessageHeaders.MESSAGE_ID.

La tabella seguente illustra i mapping delle classi da azure-spring-integration-servicebus a spring-integration-azure-servicebus:

Classe legacy Classe 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

Da azure-spring-cloud-starter-storage-queue a spring-cloud-azure-starter-integration-storage-queue

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-starter-integration-storage-queue dalla versione 2 di azure-spring-cloud-starter-storage-queue.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alla configurazione dell'SDK

Tutti i nomi delle proprietà di configurazione hanno modificato il prefisso da spring.cloud.azure.storage a spring.cloud.azure.storage.queue.

La tabella seguente illustra i mapping delle proprietà da azure-spring-cloud-starter-storage-queue a spring-cloud-azure-starter-integration-storage-queue:

Proprietà legacy Proprietà moderne
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

Modifiche API

  • Eliminare StorageQueueOperation e fornire StorageQueueTemplate invece.
  • Eliminare checkpoint-mode la configurazione in StorageQueueTemplate, supportare solo la MANUAL modalità .

Nella tabella seguente vengono illustrati i mapping delle classi da azure-spring-cloud-starter-storage-queue a spring-cloud-azure-starter-integration-storage-queue.

Classe legacy Classe moderna
com.azure.spring.integration.core.AzureHeaders com.azure.spring.messaging.AzureHeaders
com.azure.spring.integration.storage.queue.converter. Archiviazione QueueMessageConverter com.azure.spring.messaging.storage.queue.support.converter. Archiviazione QueueMessageConverter
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging.checkpoint.Checkpointer
com.azure.spring.integration.storage.queue. Archiviazione QueueTemplate com.azure.spring.storage.queue.core. Archiviazione QueueTemplate
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.storage.queue.inbound. Archiviazione QueueMessageSource com.azure.spring.integration.storage.queue.inbound. Archiviazione QueueMessageSource

Da azure-spring-integration-storage-queue a spring-integration-azure-storage-queue

Questa guida è progettata per facilitare la migrazione a spring-integration-azure-storage-queue dalla versione 2 di azure-spring-integration-storage-queue.

Modifiche API

  • Eliminare StorageQueueOperation e fornire StorageQueueTemplate invece.
  • Eliminare checkpoint-mode la configurazione in StorageQueueTemplate, supportare solo la MANUAL modalità .

Nella tabella seguente vengono illustrati i mapping delle classi da azure-spring-integration-storage-queue a spring-integration-azure-storage-queue.

Classe legacy Classe moderna
com.azure.spring.integration.core.AzureHeaders com.azure.spring.messaging.AzureHeaders
com.azure.spring.integration.storage.queue.converter. Archiviazione QueueMessageConverter com.azure.spring.messaging.storage.queue.support.converter. Archiviazione QueueMessageConverter
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging.checkpoint.Checkpointer
com.azure.spring.integration.storage.queue. Archiviazione QueueTemplate com.azure.spring.storage.queue.core. Archiviazione QueueTemplate
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.storage.queue.inbound. Archiviazione QueueMessageSource com.azure.spring.integration.storage.queue.inbound. Archiviazione QueueMessageSource

Da azure-spring-cloud-stream-binder-eventhubs a spring-cloud-azure-stream-binder-eventhubs

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-stream-binder-eventhubs dalla versione 2 di azure-spring-cloud-stream-binder-eventhubs.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alla configurazione dell'SDK

Importante

Il prefisso di configurazione è stato modificato da spring.cloud.azure.eventhub a spring.cloud.azure.eventhubs.

Importante

Il tipo di binder viene rinominato da: eventhub a eventhubs.

Per le modifiche apportate alle voci figlio per il prefisso seguente, vedere la tabella seguente.

Nella tabella seguente vengono illustrati i mapping delle proprietà da azure-spring-cloud-stream-binder-eventhubs a spring-cloud-azure-stream-binder-eventhubs:

Proprietà legacy Proprietà moderne
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

Il tipo di valore della start-position configurazione viene modificato anche da un'enumerazione di com.azure.spring.integration.core.api.StartPosition a per mapStartPositionProperties ogni partizione. Pertanto, la chiave è l'ID partizione e il valore è di che include proprietà di com.azure.spring.cloud.service.eventhubs.properties.StartPositionProperties offset, numero di sequenza, ora di data accodata e se inclusivo.

Esempi di migrazione della configurazione

Per usare il stringa di connessione per l'autenticazione ed eseguire la migrazione delle proprietà indicate in precedenza, le modifiche di configurazione sono elencate di seguito:

Configurazione legacy:

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

Configurazione 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

Se si usano entità di sicurezza anziché stringa di connessione, nelle versioni precedenti alla 4.0 l'applicazione si connetterà prima ad Azure Resource Manager (ARM) con l'entità di sicurezza fornita e quindi recupererà il stringa di connessione dello spazio dei nomi specificato con ARM. Alla fine l'applicazione usa il stringa di connessione recuperato per connettersi a Hub eventi di Azure. In questo modo, l'entità di sicurezza fornita deve essere concessa con il ruolo Collaboratore per recuperare lo spazio dei nomi Hub eventi di Azure associato.

Per Azure Spring Apps 4.0, sono disponibili due modi per sfruttare le entità di sicurezza per l'autenticazione. Uno usa ancora le entità per connettersi a ARM e recuperare le stringa di connessione in cui è necessario il Contributor ruolo per le entità. L'altro sfrutta le entità di sicurezza per eseguire l'autenticazione con Microsoft Entra ID e quindi connettersi direttamente a Hub eventi di Azure. In questo caso, il Contributor ruolo non è più necessario, mentre altri Data ruoli correlati sono necessari per le operazioni di messaggistica. Per assicurarsi che all'entità di sicurezza sia stata concessa l'autorizzazione sufficiente per accedere alla risorsa di Azure, vedere Autorizzare l'accesso con Microsoft Entra ID.

Per l'autenticazione basata su ARM, prendendo l'entità servizio, ad esempio, la migrazione della configurazione è elencata di seguito, in cui il ruolo assegnato non deve cambiare:

Configurazione legacy:

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

I valori consentiti per tenant-id sono: common, organizations, consumerso l'ID tenant. Per altre informazioni su questi valori, vedere la sezione Usato l'endpoint errato (account personali e dell'organizzazione) di Errore AADSTS50020 - L'account utente del provider di identità non esiste nel tenant. Per informazioni sulla conversione dell'app a tenant singolo, vedere Convertire l'app a tenant singolo in multi-tenant in Microsoft Entra ID.

Sono necessarie la configurazione moderna, le proprietà per l'ID sottoscrizione di Azure e il gruppo di risorse:

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

I valori consentiti per tenant-id sono: common, organizations, consumerso l'ID tenant. Per altre informazioni su questi valori, vedere la sezione Usato l'endpoint errato (account personali e dell'organizzazione) di Errore AADSTS50020 - L'account utente del provider di identità non esiste nel tenant. Per informazioni sulla conversione dell'app a tenant singolo, vedere Convertire l'app a tenant singolo in multi-tenant in Microsoft Entra ID.

È anche possibile eseguire la migrazione per eseguire l'autenticazione e l'autorizzazione direttamente con Microsoft Entra ID senza effettuare una deviazione per ARM. Assicurarsi di concedere i ruoli necessari Data all'entità di sicurezza per le operazioni di messaggistica. Di seguito sono elencati gli esempi di configurazione dell'entità servizio e dell'identità gestita:

  • Con un'entità servizio

    spring:
      cloud:
        azure:
          credential:
            client-id: ${AZURE_CLIENT_ID}
            client-secret: ${AZURE_CLIENT_SECRET}
          profile:
            tenant-id: <tenant>
          eventhubs:
            namespace: ${EVENTHUB_NAMESPACE}
    

Nota

I valori consentiti per tenant-id sono: common, organizations, consumerso l'ID tenant. Per altre informazioni su questi valori, vedere la sezione Usato l'endpoint errato (account personali e dell'organizzazione) di Errore AADSTS50020 - L'account utente del provider di identità non esiste nel tenant. Per informazioni sulla conversione dell'app a tenant singolo, vedere Convertire l'app a tenant singolo in multi-tenant in Microsoft Entra ID.

  • Con un'identità gestita

    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}
    

Modifiche API

Nella tabella seguente vengono illustrati i mapping delle classi da azure-spring-cloud-stream-binder-eventhubs a spring-cloud-azure-stream-binder-eventhubs.

Classe legacy Classe 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

Da azure-spring-cloud-stream-binder-servicebus-* a spring-cloud-azure-stream-binder-servicebus

Questa guida è progettata per facilitare la migrazione a spring-cloud-azure-stream-binder-servicebus dalla versione 2 di azure-spring-cloud-stream-binder-servicebus-queue o azure-spring-cloud-stream-binder-servicebus-topic.

Per informazioni generali, usare i collegamenti seguenti:

  • Per una panoramica delle modifiche nella versione 4.0, vedere le sezioni Introduzione e Vantaggi della migrazione.
  • Per altre informazioni sulle modifiche alla strategia nella denominazione del progetto, vedere la sezione Modifiche alla denominazione .
  • Per informazioni su come usare una distinta base per tutte le librerie di Spring Cloud di Azure, vedere la sezione BOM .
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modifiche all'autenticazione.
  • Per informazioni su come sfruttare spring-boot-properties-migrator durante la migrazione, vedere la sezione Configurare ogni SDK .
  • Per altre informazioni sulle modifiche di configurazione globali e comuni, vedere la sezione Configurazioni globali.

Modifiche alla configurazione dell'SDK

Importante

Le librerie del binder legacy sono azure-spring-cloud-stream-binder-servicebus-queue e azure-spring-cloud-stream-binder-servicebus-topice ora vengono unite in un unico spring-cloud-azure-stream-binder-servicebusoggetto .

Importante

Il tipo di binder viene combinato da servicebus-queue e servicebus-topic come servicebus.

Nella tabella seguente sono elencate le nuove proprietà di configurazione di spring-cloud-azure-stream-binder-servicebus:

Proprietà moderne Descrizione
spring.cloud.stream.servicebus.bindings.binding-name.producer.entity-type Se si usa la funzione di invio, è necessario impostare il tipo di entità, che è possibile impostare su argomento o coda.

La tabella seguente illustra i mapping delle proprietà da azure-spring-cloud-stream-binder-servicebus-* a spring-cloud-azure-stream-binder-servicebus:

Proprietà legacy Proprietà moderne
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, deve essere configurato a seconda di spring.cloud.azure.servicebus.retry.mode=fixed o esponenziale
spring.cloud.azure.servicebus.retry-options.delay Spring.cloud.azure.servicebus.retry.exponential.base-delay o spring.cloud.azure.servicebus.retry.fixed.delay, deve essere configurato a seconda di spring.cloud.azure.servicebus.retry.mode=fixed o esponenziale
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.Concorrenza spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions/max-concurrent-calls
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.modalità checkpoint spring.cloud.stream.servicebus.bindings.binding-name.consumer.completamento automatico
spring.cloud.stream.servicebus.topic.bindings.* spring.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.Concorrenza spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions/max-concurrent-calls
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.modalità checkpoint spring.cloud.stream.servicebus.bindings.binding-name.consumer.completamento automatico

Nota

La proprietà di concorrenza verrà sostituita da maxConcurrentSessions quando sessionsEnabled è true e maxConcurrentCalls quando sessionsEnabled è false.

Nota

L'abilitazione del completamento automatico è uguale alla RECORD modalità checkpoint e viceversa.MANUAL

Esempi di migrazione della configurazione

Configurazione legacy, esecuzione della coda come esempio:

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

Configurazione 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

Se si usano entità di sicurezza anziché stringa di connessione, nelle versioni precedenti alla 4.0 l'applicazione si connetterà prima ad Azure Resource Manager (ARM) con l'entità di sicurezza fornita e quindi recupererà il stringa di connessione dello spazio dei nomi specificato con ARM. Alla fine l'applicazione usa il stringa di connessione recuperato per connettersi a bus di servizio di Azure. In questo modo, l'entità di sicurezza fornita deve essere concessa con il ruolo Collaboratore per recuperare lo spazio dei nomi bus di servizio di Azure associato.

Per Azure Spring Apps 4.0, sono disponibili due modi per sfruttare le entità di sicurezza per l'autenticazione. Uno usa ancora le entità per connettersi a ARM e recuperare le stringa di connessione in cui è necessario il Contributor ruolo per le entità. L'altro sfrutta le entità di sicurezza per eseguire l'autenticazione con Microsoft Entra ID e quindi connettersi direttamente al bus di servizio di Azure. In questo caso, il Contributor ruolo non è più necessario, mentre altri Data ruoli correlati sono necessari per le operazioni di messaggistica. Per assicurarsi che all'entità di sicurezza sia stata concessa l'autorizzazione sufficiente per accedere alla risorsa di Azure, vedere Autorizzare l'accesso con Microsoft Entra ID.

Per l'autenticazione basata su ARM, prendendo l'entità servizio, ad esempio, la migrazione della configurazione è elencata di seguito, in cui il ruolo assegnato non deve cambiare:

Configurazione legacy:

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

I valori consentiti per tenant-id sono: common, organizations, consumerso l'ID tenant. Per altre informazioni su questi valori, vedere la sezione Usato l'endpoint errato (account personali e dell'organizzazione) di Errore AADSTS50020 - L'account utente del provider di identità non esiste nel tenant. Per informazioni sulla conversione dell'app a tenant singolo, vedere Convertire l'app a tenant singolo in multi-tenant in Microsoft Entra ID.

Sono necessarie la configurazione moderna, le proprietà per l'ID sottoscrizione di Azure e il gruppo di risorse:

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

I valori consentiti per tenant-id sono: common, organizations, consumerso l'ID tenant. Per altre informazioni su questi valori, vedere la sezione Usato l'endpoint errato (account personali e dell'organizzazione) di Errore AADSTS50020 - L'account utente del provider di identità non esiste nel tenant. Per informazioni sulla conversione dell'app a tenant singolo, vedere Convertire l'app a tenant singolo in multi-tenant in Microsoft Entra ID.

È anche possibile eseguire la migrazione per eseguire l'autenticazione e l'autorizzazione direttamente con Microsoft Entra ID senza effettuare una deviazione per ARM. Assicurarsi di concedere i ruoli necessari Data all'entità di sicurezza per le operazioni di messaggistica. Di seguito sono elencati gli esempi di configurazione dell'entità servizio e dell'identità gestita:

  • Con un'entità servizio

    spring:
      cloud:
        azure:
          credential:
            client-id: ${AZURE_CLIENT_ID}
            client-secret: ${AZURE_CLIENT_SECRET}
          profile:
            tenant-id: <tenant>
          servicebus:
            namespace: ${SERVICEBUS_NAMESPACE}
    

Nota

I valori consentiti per tenant-id sono: common, organizations, consumerso l'ID tenant. Per altre informazioni su questi valori, vedere la sezione Usato l'endpoint errato (account personali e dell'organizzazione) di Errore AADSTS50020 - L'account utente del provider di identità non esiste nel tenant. Per informazioni sulla conversione dell'app a tenant singolo, vedere Convertire l'app a tenant singolo in multi-tenant in Microsoft Entra ID.

  • Con un'identità gestita

    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}
    

Modifiche API

  • Eliminare l'intestazione AzureHeaders.RAW_IDdel messaggio . Utilizzare invece ServiceBusMessageHeaders.MESSAGE_ID.

Nella tabella seguente vengono illustrati i mapping delle classi da azure-spring-cloud-stream-binder-eventhubs a spring-cloud-azure-stream-binder-eventhubs.

Classe legacy Classe 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 com.azure.spring:azure-spring-cloud-messaging libreria non è pronta per la versione 4.0. La funzione delle annotazioni del listener è in fase di riprogettazione, quindi le @AzureMessageListenerannotazioni , @AzureMessageListenerse @EnableAzureMessaging non sono attualmente supportate.