Condividi tramite


Guida alla migrazione per Spring Cloud Azure 4.0

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

Introduzione

Verranno chiamate librerie il cui ID gruppo e ID artefatto seguono il modello le librerie moderne e quelle con pattern , o 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-*, com.azure.spring:azure-spring-cloud-* o pacchetto di com.azure.spring:azure-spring-integration-*.

Se non si ha familiarità con le librerie Spring Cloud Azure 4.0, vedere la guida per sviluppatori Spring Cloud Azure anziché questa guida.

Vantaggi della migrazione

Una domanda naturale da porre quando si valuta se adottare una nuova versione o libreria è il suo vantaggio. Man mano che Azure è maturo ed è stato abbracciato 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 presenti nelle librerie di Spring Cloud Azure.

Esistono diverse aree di feedback coerenti espresse nelle librerie spring cloud Azure. L'aspetto più importante è che le librerie per i 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 Azure, è stato introdotto un set di linee guida per la progettazione per garantire che le librerie Spring Cloud Azure abbiano un'atmosfera naturale e idiotica rispetto all'ecosistema Spring. Altri dettagli sono disponibili nella documentazione design 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 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 Azure o 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 alla denominazione

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

DBA

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

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

Nota

Se si usa Spring Boot 4.0.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 7.1.0.

Se si usa Spring Boot 3.5.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 6.1.0.

Se si usa Spring Boot 3.1.x-3.5.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 5.25.0.

Se si usa Spring Boot 2.x, assicurarsi di impostare la spring-cloud-azure-dependencies versione su 4.20.0.

Questo Bill of Material (BOM) deve essere configurato nella sezione <dependencyManagement> del file pom.xml. In questo modo, tutte le dipendenze di Spring Cloud Azure usano la stessa versione.

Per altre informazioni sulla versione usata per questa distinta base, vedere Which Version of Spring Cloud Azure Should I Use.

Modifiche all'artefatto: rinominato/aggiunto/eliminato

Gli ID gruppo sono gli stessi per le librerie spring cloud moderne e legacy Azure. Sono tutti com.azure.spring. Gli ID degli 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 potrebbe 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 sono stati aggiunti 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 primavera-nuvola-azure-starter Questo artefatto è stato eliminato con tutte le funzionalità da unire nel nuovo artefatto spring-cloud-azure-starter.
azure-spring-boot-starter-active-directory spring-cloud-azure-starter-active-directory Rinominato l'artefatto.
azure-spring-boot-starter-active-directory-b2c primavera-cloud-azure-starter-active-directory-b2c Rinominato l'artefatto.
azure-spring-boot-starter-cosmos primavera-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à sia del BLOB di archiviazione che della condivisione file, è stato inserito in due artefatti separati nella versione 4.0, spring-cloud-azure-starter-storage-blob e spring-cloud-azure-starter-storage-file-share.
azure-spring-boot non applicabile Questo artefatto è stato eliminato con tutte le funzionalità da unire nel nuovo artefatto spring-cloud-azure-autoconfigure.
azure-spring-cloud-autoconfigure non applicabile Questo artefatto è stato eliminato con tutte le funzionalità da unire nel nuovo artefatto spring-cloud-azure-autoconfigure.
azure-spring-cloud-context non applicabile Questo artefatto è stato eliminato con tutte le funzionalità da unire ai nuovi elementi spring-cloud-azure-autoconfigure e spring-cloud-azure-resourcemanager.
azure-spring-cloud-messaging primavera-messaggistica-azzurro 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 Spring Cloud Azure Supporto 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 Spring Cloud Azure supporto 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 Service Bus.
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 la coda di archiviazione.
azure-spring-cloud-storage non applicabile Questo artefatto è stato eliminato con tutte le funzionalità unite nel nuovo artefatto spring-cloud-azure-autoconfigure.
azure-spring-cloud-stream-binder-eventhubs spring-cloud-azure-stream-binder-eventhubs Questo artefatto è stato 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 spring cloud Azure dell'attuatore appena aggiunto.
non applicabile spring-cloud-azure-override-autoconfigure L'artefatto spring cloud Azure configurazione automatica dell'attuatore appena aggiunto, inclusa la configurazione automatica per l'attuatore.
non applicabile primavera-cloud-azure-autoconfigure È stato aggiunto l'elemento Spring Cloud Azure AutoConfigure, tra cui tutte le configurazioni auto per i client SDK, il supporto spring security, il supporto Spring Data e il supporto spring integration.
non applicabile primavera-nuvola-azure-core È stato aggiunto l'elemento Spring Cloud Azure Core, incluse tutte le funzionalità di base.
non applicabile spring-cloud-azure-resourcemanager Appena aggiunto Resource Manager artefatto. Si tratta della libreria Core che usa Azure Resource Manager per leggere i metadati e creare risorse.
non applicabile spring-cloud-azure-service È stato aggiunto l'artefatto di Spring Cloud Azure Service, incluse le astrazioni per i servizi Azure.
non applicabile configurazione dell'app spring-cloud-azure-starter Appena aggiunto starter per l'uso di Azure App Configuration client SDK.
non applicabile primavera-nuvola-azzurra-starter-cosmos Appena aggiunto starter per l'uso di Azure Cosmos DB client SDK.
non applicabile spring-cloud-azure-starter-eventhubs Appena aggiunto starter per l'uso di Azure Event Hubs client SDK.
non applicabile spring-cloud-azure-starter-servicebus Appena aggiunto starter per l'uso di Azure Service Bus client SDK.
non applicabile spring-cloud-azure-starter-storage-blob Nuovo strumento di avvio per l'uso di Azure Storage client BLOB SDK.
non applicabile spring-cloud-azure-starter-storage-file-share Appena aggiunto lo starter per l'uso di Azure Storage client di File Share SDK.
non applicabile spring-cloud-azure-starter-storage-queue Appena aggiunto starter per l'uso di Azure Storage client Queue SDK.
non applicabile spring-cloud-azure-starter-stream-eventhubs Nuovo strumento di avvio per l'uso di Azure Event Hubs Spring Cloud Stream Binder.
non applicabile spring-cloud-azure-starter-stream-servicebus Strumento di avvio appena aggiunto per l'uso di Azure Service Bus Spring Cloud Stream Binder
non applicabile spring-cloud-azure-stream-binder-eventhubs-core È stato appena aggiunto l'artefatto principale di Spring Cloud Stream per Azure Event Hubs.

Modifiche alle dipendenze

Alcune dipendenze non necessarie sono state incluse negli artefatti legacy, che sono state rimosse nelle moderne librerie 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 Azure Service SDK. 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 Azure Services. 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 Azure servizi di messaggistica, per eseguire operazioni di messaggistica sono necessari i ruoli correlati Data. Per Azure Spring Apps hub eventi di flusso/Service Bus librerie binder, è necessario Contributor ruolo quando è necessaria la funzione di creazione automatica delle risorse. Per altre informazioni, vedere Azure ruoli predefiniti.

Una credenziale concatenata, la DefaultAzureCredential bean è configurata automaticamente per impostazione predefinita e verrà usata da tutti i componenti se non vengono specificate altre informazioni di autenticazione. Per altre informazioni, vedere la sezione DefaultAzureCredential della libreria client Azure Identity 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à non 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 del spring-boot-properties-migrator consente di semplificare la migrazione.

Configurazioni globali

La < moderna /> consente di definire proprietà applicabili a tutte le Azure SDKs nello spazio dei nomi . Questa funzionalità non è supportata nell'azure-spring-boot-starterlegacy. Le configurazioni globali possono essere suddivise in cinque categorie, illustrate nella tabella seguente:

Prefisso Descrizione
primavera.cloud.azure.client Configura i client di trasporto sotto ogni Azure SDK.
primavera.cloud.azure.credential Configura come eseguire l'autenticazione con Microsoft Entra ID.
primavera.cloud.azure.profile Configura l'ambiente cloud Azure.
primavera.cloud.azure.proxy Configura le opzioni proxy, si applica a tutti i client Azure SDK.
primavera.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 spring.cloud.azure.cosmos.retry.

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

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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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 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:convalida-avviamento-molla 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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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 dopo la moderna libreria 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:convalida-avviamento-molla 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 la nuova proprietà spring.cloud.azure.active-directory.enabled per abilitare/disabilitare Microsoft Entra funzionalità correlate. 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.tipo-di-applicazione
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.nome-utente attributo spring.cloud.azure.active-directory.attributo-nome-utente
  • 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 (opzione per utilizzare membri transitivi nei gruppi utente)

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. Caso 1

    • Per la versione 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 la versione 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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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 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:convalida-avviamento-molla 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/disabilitazione Azure funzionalità correlate ad 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.tipo-di-concessione-autorizzazione> spring.cloud.azure.active-directory.b2c.authorization-clients.<AZURE_CLIENT_NAME.tipo-di-concessione-autorizzazione>
azure.activedirectory.b2c.authorization-clients.<AZURE_CLIENT_NAME>ambiti spring.cloud.azure.active-directory.b2c.authorization-clients.<AZURE_CLIENT_NAME>ambiti
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.b2cflussi utente spring.cloud.azure.active-directory.b2cflussi utente
azure.activedirectory.b2c.nome-utente-nome-attributo spring.cloud.azure.active-directory.b2c.nome-utente-nome-attributo
  • 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-connessione-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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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.cosmosmodalità connessione spring.cloud.azure.cosmosmodalità connessione
azure.cosmoslivello di coerenza spring.cloud.azure.cosmoslivello di coerenza
azure.cosmos.database primavera.cloud.azure.cosmos.database
azure.cosmos.key .key spring.cloud.azure.cosmos
azure.cosmos.populate-query-metrics spring.cloud.azure.cosmos.populate-query-metrics
azure.cosmos.uri spring.cloud.azure.cosmosendpoint

da azure-spring-boot-starter-keyvault-secrets a spring-cloud-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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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.keyvaultchiavi con distinzione tra maiuscole e minuscole 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.keyvaultabilitato spring.cloud.azure.keyvault.secret.property-source-enabled e spring.cloud.azure.keyvault.secret.property-source-enabled
azure.keyvault.order Non più supportato. Usare invece l'ordine in property-source[n].
azure.keyvaultintervallo di aggiornamento 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à del segreto Key Vault, includere la configurazione dei fagioli client segreti Key Vault(ad esempio SecretClient e SecretAsyncClient) e aggiungere KeyVaultPropertySource in ConfigurableEnvironment.
  3. spring.cloud.azure.keyvault.secret.property-source-enabled viene usato per abilitare tutti i KeyVaultPropertySource. Avrà effetto solo quando spring.cloud.azure.keyvault.secret.enabled=true.
  4. Per Azure proprietà comuni, ad esempio client, proxy, retry, credential, profile) e proprietà Key Vault(ad esempio endpoint, service-version). Se spring.cloud.azure.keyvault.secret.property-sources[n].PROPERTY_NAME non è configurato, verrà usato spring.cloud.azure.keyvault.secret.PROPERTY_NAME.
  5. spring.cloud.azure.keyvault.secret.property-sources[n].resource è specifico di una risorsa 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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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.nome-account 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.AzureStorageProtocolResolver com.azure.spring.core.resource.AzureStorageBlobProtocolResolver
com.azure.spring.autoconfigure.storage.resource.BlobStorageResource com.azure.spring.core.resource.StorageBlobResource
com.azure.spring.autoconfigure.storage.resource.AzureStorageResourcePatternResolver com.azure.spring.core.resource.AzureStorageBlobProtocolResolver

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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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.nome-account 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.fileshareendpoint

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.AzureStorageProtocolResolver com.azure.spring.core.resource.AzureStorageFileProtocolResolver
com.azure.spring.autoconfigure.storage.resource.FileStorageResource com.azure.spring.core.resource.StorageFileResource
com.azure.spring.autoconfigure.storage.resource.AzureStorageResourcePatternResolver com.azure.spring.core.resource.AzureStorageFileProtocolResolver

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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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
primavera.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.eventhubsstringa di connessione
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}

A:

spring:
  cloud:
    azure:
      eventhubs:
        connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
        processor:
          checkpoint-store:
            container-name: ${AZURE_STORAGE_CONTAINER_NAME}
            account-name: ${AZURE_STORAGE_ACCOUNT_NAME}
            account-key: ${AZURE_STORAGE_ACCOUNT_KEY}

Nota

Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Il flusso di autenticazione descritto in questa procedura, ad esempio per database, cache, messaggistica o servizi di intelligenza artificiale, richiede un livello di attendibilità molto elevato nell'applicazione e comporta rischi non presenti in altri flussi. Usare questo flusso solo quando le opzioni più sicure, ad esempio le identità gestite per le connessioni senza password o senza chiave, non sono valide. Per le operazioni del computer locale, preferire le identità utente per le connessioni senza password o senza chiave.

Modifiche api

  • Per le modifiche alle annotazioni del listener, vedere la guida alla migrazione di <<migrazione-azure-spring-cloud-messaging, azure-spring-cloud-messaging>> libreria.
  • Eliminare EventHubOperation con la funzione di sottoscrizione spostata nella classe EventHubsMessageListenerContainer e la funzione di invio è stata spostata in EventHubsTemplate.
  • Rinominare EventHubInboundChannelAdapter come EventHubsInboundChannelAdapter per mantenere la coerenza con il servizio di Azure Event Hubs.
  • Modificare il costruttore da EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String) a EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) e EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Modificare CheckpointConfig 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 modalità checkpoint BATCH 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.

  • 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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.

Modifiche api

  • Eliminare EventHubOperation con la funzione di sottoscrizione spostata nella classe EventHubsMessageListenerContainer e la funzione di invio è stata spostata in EventHubsTemplate.
  • Rinominare EventHubInboundChannelAdapter come EventHubsInboundChannelAdapter per mantenere la coerenza con il servizio di Azure Event Hubs.
  • Modificare il costruttore da EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String) a EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) e EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Modificare CheckpointConfig 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 modalità checkpoint BATCH 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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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
primavera.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-tentativi 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= fisso 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= fisso o esponenziale
primavera.cloud.azure.servicebus.retry-options.max-ritardo 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 spostata in ServiceBusTemplate.
  • Eliminare ServiceBusQueueInboundChannelAdapter e ServiceBusTopicInboundChannelAdapter e spostare la funzionalità per ascoltare un'entità coda/argomento Service Bus 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 API ServiceBusQueueOperation#setCheckpointConfig 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 a MANUAL modalità di checkpoint e per abilitarla attiverà la modalità di RECORD.
  • Eliminare le API ServiceBusQueueOperatio#setClientConfig e ServiceBusTopicOperation#setClientConfig. Per configurare la ServiceBusProcessorClient sottostante usata dall'adattatore del canale in ingresso, gli utenti possono invece usare ServiceBusContainerProperties.
  • Eliminare CompletableFuture supporto in ServiceBusTemplate e DefaultMessageHandler, supportare Reactor.
  • Aggiungere una nuova API di ServiceBusTemplate#setDefaultEntityType per specificare il tipo di entità, necessario quando non viene fornito alcun bean di PropertiesSupplier&lt;String, ProducerProperties&gt; per il ProducerProperties#entityType.
  • Eliminare l'intestazione del messaggio AzureHeaders.RAW_ID. 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 dell'uso di 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.

  • 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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.

Modifiche api

  • Eliminare ServiceBusQueueOperation e ServiceBusTopicOperation con la funzione di sottoscrizione spostata nella classe ServiceBusMessageListenerContainer e la funzione di invio spostata in ServiceBusTemplate.
  • Eliminare ServiceBusQueueInboundChannelAdapter e ServiceBusTopicInboundChannelAdapter e spostare la funzionalità per ascoltare un'entità coda/argomento Service Bus 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 API ServiceBusQueueOperation#setCheckpointConfig 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 a MANUAL modalità di checkpoint e per abilitarla attiverà la modalità di RECORD.
  • Eliminare le API ServiceBusQueueOperation#setClientConfig e ServiceBusTopicOperation#setClientConfig. Per configurare la ServiceBusProcessorClient sottostante usata dall'adattatore del canale in ingresso, gli utenti possono invece usare ServiceBusContainerProperties.
  • Eliminare CompletableFuture supporto in ServiceBusTemplate e DefaultMessageHandler, supportare Reactor.
  • Aggiungere una nuova API di ServiceBusTemplate#setDefaultEntityType per specificare il tipo di entità, necessario quando non viene fornito alcun bean di PropertiesSupplier&lt;String, ProducerProperties&gt; per il ProducerProperties#entityType.
  • Eliminare l'intestazione del messaggio AzureHeaders.RAW_ID. 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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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
primavera.cloud.azure.storage.account spring.cloud.azure.storage.queue.nome-account
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.
  • Eliminare checkpoint-mode configurazione in StorageQueueTemplate, supporta solo la modalità di MANUAL.

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.StorageQueueMessageConverter com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging.checkpoint.Checkpointer
com.azure.spring.integration.storage.queue.StorageQueueTemplate com.azure.spring.storage.queue.core.StorageQueueTemplate
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource

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.

  • 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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.

Modifiche api

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

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.StorageQueueMessageConverter com.azure.spring.messaging.storage.queue.support.converter.StorageQueueMessageConverter
com.azure.spring.integration.core.api.reactor.Checkpointer com.azure.spring.messaging.checkpoint.Checkpointer
com.azure.spring.integration.storage.queue.StorageQueueTemplate com.azure.spring.storage.queue.core.StorageQueueTemplate
com.azure.spring.integration.core.api.reactor.DefaultMessageHandler com.azure.spring.integration.core.handler.DefaultMessageHandler
com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource com.azure.spring.integration.storage.queue.inbound.StorageQueueMessageSource

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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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 gestore di associazione viene rinominato da: eventhub in 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
primavera.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.eventhubsstringa di connessione
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.consumermodalità checkpoint 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 configurazione start-position viene modificato anche da un'enumerazione di com.azure.spring.integration.core.api.StartPosition a un map di StartPositionProperties per ogni partizione. Pertanto, la chiave è l'ID partizione e il valore è di com.azure.spring.cloud.service.eventhubs.properties.StartPositionProperties che include proprietà di offset, numero di sequenza, ora di data accodata e se inclusivo.

Esempi di migrazione della configurazione

Per usare il connection string 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

Nota

Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Il flusso di autenticazione descritto in questa procedura, ad esempio per database, cache, messaggistica o servizi di intelligenza artificiale, richiede un livello di attendibilità molto elevato nell'applicazione e comporta rischi non presenti in altri flussi. Usare questo flusso solo quando le opzioni più sicure, ad esempio le identità gestite per le connessioni senza password o senza chiave, non sono valide. Per le operazioni del computer locale, preferire le identità utente per le connessioni senza password o senza chiave.

Se si usano entità di sicurezza anziché stringhe di connessione, nelle versioni precedenti alla 4.0 l'applicazione si connetterà prima a Azure Resource Manager (ARM) con l'entità di sicurezza fornita e quindi recupererà il connection string dello spazio dei nomi specificato con ARM. Alla fine l'applicazione usa il connection string recuperato per connettersi a Azure Event Hubs. In questo modo, l'entità di sicurezza fornita deve essere concessa con il ruolo Contributor per recuperare lo spazio dei nomi Azure Event Hubs 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 ad ARM e recuperare le stringhe di connessione in cui è necessario il ruolo Contributor per le entità. L'altro usa le entità di sicurezza per eseguire l'autenticazione a Microsoft Entra ID e quindi connettersi direttamente a Azure Event Hubs. In questo caso, il ruolo Contributor non è più necessario, mentre altri ruoli correlati Data sono necessari per le operazioni di messaggistica. Per assicurarsi che all'entità di sicurezza sia stata concessa l'autorizzazione sufficiente per accedere alla risorsa 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 Convert single-tenant app in multi-tenant in Microsoft Entra ID.

Sono necessarie la configurazione moderna, le proprietà per Azure ID sottoscrizione e 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 Convert single-tenant app in multi-tenant in Microsoft Entra ID.

È anche possibile eseguire la migrazione per eseguire l'autenticazione e l'autorizzazione con Microsoft Entra ID direttamente senza effettuare una deviazione verso ARM. Assicurarsi di concedere all'entità di sicurezza necessaria Data ruoli 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 Convert single-tenant app 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-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 un bom per tutte le librerie spring cloud Azure, vedere la sezione BOM.
  • Per informazioni su come gestire l'autenticazione in Spring Cloud Azure 4.0, vedere la sezione Modificare l'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'unica spring-cloud-azure-stream-binder-servicebus.

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
primavera.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-tentativi 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= fisso 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= fisso o esponenziale
primavera.cloud.azure.servicebus.retry-options.max-ritardo 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.* primavera.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer. di concorrenza spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-sessioni-simultanee/max-chiamate-simultanee
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.modalità checkpoint spring.cloud.stream.servicebus.bindings.binding-name.consumer.completamento automatico
primavera.cloud.stream.servicebus.topic.bindings.* primavera.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer. di concorrenza spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-sessioni-simultanee/max-chiamate-simultanee
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 a RECORD modalità checkpoint e viceversa la modalità di 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

Nota

Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Il flusso di autenticazione descritto in questa procedura, ad esempio per database, cache, messaggistica o servizi di intelligenza artificiale, richiede un livello di attendibilità molto elevato nell'applicazione e comporta rischi non presenti in altri flussi. Usare questo flusso solo quando le opzioni più sicure, ad esempio le identità gestite per le connessioni senza password o senza chiave, non sono valide. Per le operazioni del computer locale, preferire le identità utente per le connessioni senza password o senza chiave.

Se si usano entità di sicurezza anziché stringhe di connessione, nelle versioni precedenti alla 4.0 l'applicazione si connetterà prima a Azure Resource Manager (ARM) con l'entità di sicurezza fornita e quindi recupererà il connection string dello spazio dei nomi specificato con ARM. Alla fine l'applicazione usa il connection string recuperato per connettersi a Azure Service Bus. In questo modo l'entità di sicurezza fornita deve essere concessa con il ruolo Contributor per recuperare lo spazio dei nomi Azure Service Bus 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 ad ARM e recuperare le stringhe di connessione in cui è necessario il ruolo Contributor per le entità. L'altro usa le entità di sicurezza per eseguire l'autenticazione a Microsoft Entra ID e quindi connettersi direttamente al Azure Service Bus. In questo caso, il ruolo Contributor non è più necessario, mentre altri ruoli correlati Data sono necessari per le operazioni di messaggistica. Per assicurarsi che all'entità di sicurezza sia stata concessa l'autorizzazione sufficiente per accedere alla risorsa 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 Convert single-tenant app in multi-tenant in Microsoft Entra ID.

Sono necessarie la configurazione moderna, le proprietà per Azure ID sottoscrizione e 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 Convert single-tenant app in multi-tenant in Microsoft Entra ID.

È anche possibile eseguire la migrazione per eseguire l'autenticazione e l'autorizzazione con Microsoft Entra ID direttamente senza effettuare una deviazione verso ARM. Assicurarsi di concedere all'entità di sicurezza necessaria Data ruoli 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 Convert single-tenant app 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 del messaggio AzureHeaders.RAW_ID. 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 libreria com.azure.spring:azure-spring-cloud-messaging non è pronta per la versione 4.0. La funzione delle annotazioni del listener è in fase di riprogettazione, pertanto le annotazioni @AzureMessageListener, @AzureMessageListenerse @EnableAzureMessaging non sono attualmente supportate.