Migreringsguide för Spring Cloud Azure 4.0

Den här guiden hjälper till med migrering till Spring Cloud Azure 4.0 från äldre Azure Spring-bibliotek.

Introduktion

Vi anropar bibliotek vars grupp-ID och artefakt-ID följer mönstret com.azure.spring:spring-cloud-azure-* de moderna biblioteken och de med mönstret com.azure.spring:azure-spring-boot-*, com.azure.spring:azure-spring-cloud-*eller com.azure.spring:azure-spring-integration-* de äldre biblioteken.

Den här guiden fokuserar på jämförelser sida vid sida för liknande konfigurationer mellan moderna och äldre bibliotek.

Kunskaper om com.azure.spring:azure-spring-boot-*, com.azure.spring:azure-spring-cloud-* eller com.azure.spring:azure-spring-integration-* paket antas.

Om du är nybörjare på Spring Cloud Azure 4.0-biblioteken kan du läsa utvecklarguiden för Spring Cloud Azure i stället för den här guiden.

Migreringsfördelar

En naturlig fråga att ställa när man överväger om en ny version eller ett nytt bibliotek ska införas är dess fördelar. Eftersom Azure har mognat och omfamnats av en mer varierad grupp utvecklare har vi fokuserat på att lära oss mönster och metoder för att på bästa sätt stödja utvecklarnas produktivitet och förstå de luckor som Azure-biblioteken i Spring Cloud har.

Det fanns flera områden med konsekvent feedback som uttrycktes i Azure-biblioteken för Spring Cloud. Det viktigaste är att biblioteken för olika Azure-tjänster inte har aktiverat den fullständiga uppsättningen konfigurationer. Dessutom gjorde inkonsekvensen i projektnamngivning, artefakt-ID, versioner och konfigurationer inlärningskurvan brant.

För att förbättra utvecklingsupplevelsen i Azure-biblioteken i Spring Cloud introducerades en uppsättning designriktlinjer för att säkerställa att Spring Cloud Azure-bibliotek har en naturlig och idiomatisk känsla när det gäller Spring-ekosystemet. Mer information finns i designdokumentet för dem som är intresserade.

Spring Cloud Azure 4.0 ger den delade upplevelsen i bibliotek som integreras med olika Spring-projekt, till exempel Spring Boot, Spring Integration, Spring Cloud Stream och så vidare. Den delade upplevelsen omfattar:

  • En enhetlig strukturlista som omfattar alla Spring Cloud Azure 4.0-bibliotek.
  • En konsekvent namngivningskonvention för artefakter.
  • Ett enhetligt sätt att konfigurera inställningar för autentiseringsuppgifter, proxy, återförsök, molnmiljö och transportlager.
  • Stöd för alla autentiserande metoder som en Azure Service eller Azure Service SDK stöder.

Översikt

Den här migreringsguiden består av följande avsnitt:

  • Namngivningsändringar för Spring Cloud Azure 4.0
  • Artefaktändringar: har bytt namn/lagts till/tagits bort
  • Beroendeändringar
  • Autentiseringsändringar
  • Konfigurationsegenskaper
  • Api-icke-bakåtkompatibla ändringar
  • Biblioteksändringar

Namnändringar

Det har aldrig funnits ett konsekvent eller officiellt namn för att anropa alla Spring Cloud Azure-bibliotek. Några av dem kallades Azure Spring Boot och några av dem Spring on Azure. Sedan 4.0 började vi använda projektnamnet Spring Cloud Azure för att representera alla Azure Spring-bibliotek.

Strukturlista

Vi brukade skicka två BPM:er för våra bibliotek, azure-spring-boot-bom och azure-spring-cloud-dependencies, men vi kombinerade dessa två strukturlistor till en strukturlista sedan 4.0, spring-cloud-azure-dependencies. Lägg till en post i avsnittet i dependencyManagement projektet för att dra nytta av beroendehanteringen.

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

Kommentar

Om du använder Spring Boot 3.x måste du ange spring-cloud-azure-dependencies versionen till 5.8.0. Mer information om versionen finns i spring-cloud-azure-dependencies Vilken version av Spring Cloud Azure ska jag använda.

Artefaktändringar: har bytt namn/lagts till/tagits bort

Grupp-ID:t är desamma för moderna och äldre Spring Cloud Azure-bibliotek. De är alla com.azure.spring. Artefakt-ID:n för de moderna Spring Cloud Azure-biblioteken har ändrats. Enligt vilket Spring-projekt det tillhör, Spring Boot, Spring Integration eller Spring Cloud Stream, kan artefakt-ID:n vara spring-cloud-azure-starter-[service], spring-integration-azure-[service]eller spring-cloud-azure-stream-binder-[service]. De äldre starterna för var och en har ett artefakt-ID som följer mönstret azure-spring-*. Detta ger ett snabbt och tillgängligt sätt att snabbt förstå om du använder moderna eller äldre förrätter.

Under utvecklingen av Spring Cloud Azure 4.0 bytte vi namn på några artefakter för att få dem att följa de nya namngivningskonventionerna, tog bort några artefakter så att funktionerna kunde placeras i en lämpligare artefakt och lade till några nya artefakter för att bättre hantera vissa scenarier.

I följande tabell visas mappningarna mellan äldre artefakt-ID och modernt artefakt-ID:

Äldre artefakt-ID Modernt artefakt-ID beskrivning
azure-spring-boot-starter spring-cloud-azure-starter Den här artefakten har tagits bort med alla funktioner sammanfogade till den nya spring-cloud-azure-starter artefakten.
azure-spring-boot-starter-active-directory spring-cloud-azure-starter-active-directory Artefakten har bytt namn.
azure-spring-boot-starter-active-directory-b2c spring-cloud-azure-starter-active-directory-b2c Artefakten har bytt namn.
azure-spring-boot-starter-cosmos spring-cloud-azure-starter-data-cosmos Ändrade namn på artefakten för att lägga till data, vilket indikerar att du använder Spring Data Azure Cosmos DB.
azure-spring-boot-starter-keyvault-certificates inte tillämpligt Ingår inte i den här versionen, men stöds i senare version.
azure-spring-boot-starter-keyvault-secrets spring-cloud-azure-starter-keyvault-secrets Artefakten har bytt namn.
azure-spring-boot-starter-servicebus-jms spring-cloud-azure-starter-servicebus-jms Artefakten har bytt namn.
azure-spring-boot-starter-storage spring-cloud-azure-starter-storage-blob
spring-cloud-azure-starter-storage-file-share
Den äldre artefakten innehåller funktionerna i både Storage Blob och File Share. Den har delats upp i två separata artefakter i 4.0, spring-cloud-azure-starter-storage-blob och spring-cloud-azure-starter-storage-file-share.
azure-spring-boot inte tillämpligt Den här artefakten har tagits bort med alla funktioner sammanfogade till den nya spring-cloud-azure-autoconfigure artefakten.
azure-spring-cloud-autoconfigure inte tillämpligt Den här artefakten har tagits bort med alla funktioner sammanfogade till den nya spring-cloud-azure-autoconfigure artefakten.
azure-spring-cloud-context inte tillämpligt Den här artefakten har tagits bort med alla funktioner sammanfogade med de nya spring-cloud-azure-autoconfigure artefakterna och spring-cloud-azure-resourcemanager artefakterna.
azure-spring-cloud-messaging spring-messaging-azure Meddelandelyssningsanteckningen har tagits bort.
azure-spring-cloud-starter-cache inte tillämpligt Den här artefakten har tagits bort för användning av redis genom att bara lägga till spring-boot-starter-data-redis, spring-boot-starter-cache, spring-cloud-azure-resourcemanager och spring-cloud-azure-starter. Mer information om användning finns i Support för Spring Cloud Azure Redis.
azure-spring-cloud-starter-eventhubs-kafka inte tillämpligt Den här artefakten har tagits bort för användning av kafka genom att bara lägga till spring kafka, spring-cloud-azure-resourcemanager och spring-cloud-azure-starter. Mer information om användning finns i Spring Cloud Azure Kafka-support.
azure-spring-cloud-starter-eventhubs spring-cloud-azure-starter-integration-eventhubs Ändrade namn på artefakten för att lägga till integration, vilket indikerar att springintegrering med Event Hubs används.
azure-spring-cloud-starter-servicebus spring-cloud-azure-starter-integration-servicebus Ändrade namn på artefakten för att lägga till integration, vilket anger att springintegrering med Service Bus används.
azure-spring-cloud-starter-storage-queue spring-cloud-azure-starter-integration-storage-queue Ändrade namn på artefakten för att lägga till integration, vilket anger att springintegrering med lagringskö används.
azure-spring-cloud-storage inte tillämpligt Den här artefakten har tagits bort med alla funktioner sammanfogade i den nya spring-cloud-azure-autoconfigure artefakten.
azure-spring-cloud-stream-binder-eventhubs spring-cloud-azure-stream-binder-eventhubs Artefakten har omstrukturerats med hjälp av en ny design, främst spring-cloud-azure-stream-binder-eventhubs och spring-cloud-azure-stream-binder-eventhubs-core.
azure-spring-cloud-stream-binder-service-core spring-cloud-azure-stream-binder-servicebus-core Artefakten har bytt namn.
azure-spring-cloud-stream-binder-servicebus-queue spring-cloud-azure-stream-binder-servicebus Den här artefakten har tagits bort med alla funktioner sammanfogade till spring-cloud-azure-stream-binder-servicebus artefakten.
azure-spring-cloud-stream-binder-servicebus-topic spring-cloud-azure-stream-binder-servicebus Den här artefakten har tagits bort med alla funktioner sammanfogade till spring-cloud-azure-stream-binder-servicebus artefakten.
azure-spring-integration-core spring-integration-azure-core Artefakten har bytt namn.
azure-spring-integration-eventhubs spring-integration-azure-eventhubs Byt namn på artefakten.
azure-spring-integration-servicebus spring-integration-azure-servicebus Byt namn på artefakten.
azure-spring-integration-storage-queue spring-integration-azure-storage-queue Byt namn på artefakten.
inte tillämpligt spring-cloud-azure-actuator Den nyligen tillagda Spring Cloud Azure Actuator-artefakten.
inte tillämpligt spring-cloud-azure-actuator-autoconfigure Den nyligen tillagda Spring Cloud Azure Actuator AutoConfigure-artefakten, inklusive automatisk konfiguration för ställdon.
inte tillämpligt spring-cloud-azure-autoconfigure Nyligen tillagd Spring Cloud Azure AutoConfigure-artefakt, inklusive all automatisk konfiguration för SDK-klienter, Spring Security-stöd, Spring Data-stöd och Spring Integration-stöd.
inte tillämpligt spring-cloud-azure-core Nyligen tillagd Spring Cloud Azure Core-artefakt, inklusive alla kärnfunktioner.
inte tillämpligt spring-cloud-azure-resourcemanager Nyligen tillagda Resource Manager-artefakt. Det är Core-biblioteket som använder Azure Resource Manager för att läsa metadata och skapa resurser.
inte tillämpligt spring-cloud-azure-service Nyligen tillagd Spring Cloud Azure Service-artefakt, inklusive abstraktioner för Azure-tjänster.
inte tillämpligt spring-cloud-azure-starter-appconfiguration Nyligen tillagd start för att använda Azure App Configuration SDK-klienten.
inte tillämpligt spring-cloud-azure-starter-cosmos Nyligen tillagd start för att använda Azure Cosmos DB SDK-klienten.
inte tillämpligt spring-cloud-azure-starter-eventhubs Nyligen tillagd start för att använda Azure Event Hubs SDK-klienten.
inte tillämpligt spring-cloud-azure-starter-servicebus Nyligen tillagda starter för att använda Azure Service Bus SDK-klienten.
inte tillämpligt spring-cloud-azure-starter-storage-blob Nyligen tillagda starter för att använda Azure Storage Blob SDK-klienten.
inte tillämpligt spring-cloud-azure-starter-storage-file-share Nyligen tillagda starter för att använda Azure Storage File Share SDK-klienten.
inte tillämpligt spring-cloud-azure-starter-storage-queue Nyligen tillagda starter för att använda Azure Storage Queue SDK-klienten.
inte tillämpligt spring-cloud-azure-starter-stream-eventhubs Nyligen tillagd start för användning av Azure Event Hubs Spring Cloud Stream Binder.
inte tillämpligt spring-cloud-azure-starter-stream-servicebus Nytillagd start för att använda Azure Service Bus Spring Cloud Stream Binder
inte tillämpligt spring-cloud-azure-stream-binder-eventhubs-core Nyligen tillagda Spring Cloud Stream-kärnartefakt för Azure Event Hubs.

Ändringar i beroenden

Några onödiga beroenden inkluderades i de äldre artefakterna, som vi har tagit bort i de moderna Spring Cloud Azure 4.0-biblioteken. Se till att lägga till de borttagna beroendena manuellt i projektet för att förhindra krascher.

Bibliotek som har beroendeändringar inkluderar:

Autentiseringsändringar

Spring Cloud Azure 4.0 stöder alla autentiseringsmetoder som varje Azure Service SDK stöder. Det gör att du kan konfigurera en global tokenautentiseringsuppgift och tillhandahålla tokenautentiseringsuppgifterna på varje tjänstnivå. Men en autentiseringsuppgift krävs inte för att konfigurera Spring Cloud Azure 4.0 eftersom den kan tillämpa autentiseringsuppgifterna som lagras i en lokal utvecklingsmiljö eller hanterad identitet i Azure Services. Se bara till att huvudkontot har beviljats tillräcklig behörighet för att få åtkomst till Azure-målresurserna.

Kommentar

När du tilldelar roller till säkerhetsobjekten för att interagera med Azure-meddelandetjänster krävs de Data relaterade rollerna för att utföra meddelandeåtgärder. För Azure Spring Apps Stream Event Hubs/Service Bus Binder-bibliotek Contributor krävs roll när funktionen för att skapa resurser automatiskt behövs. Mer information finns i Inbyggda roller i Azure.

En länkad autentiseringsuppgift, bönan DefaultAzureCredential konfigureras automatiskt som standard och används av alla komponenter om ingen mer autentiseringsinformation anges. Mer information finns i avsnittet DefaultAzureCredential i Azure Identity-klientbiblioteket för Java.

Konfigurationsegenskaper

Migrering av egenskaper

Vi har skapat en ytterligare-spring-configuration-metadata.json-fil för att jämna ut egenskapsmigreringen när du använder med spring-boot-properties-migrator. Lägg först till följande egenskapsmigrator i ditt program:

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

Eller om du använder Gradle:

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

Om du kör appen identifieras de egenskaper som inte längre hanteras av Spring Cloud Azure. Om det finns en ersättning mappas egenskapen tillfälligt om för dig med en varning. Om det inte finns någon ersättning får du mer information i en felrapport. Hur som helst måste konfigurationen uppdateras och beroendet tas bort när du har uppdaterat konfigurationen.

Innan du går vidare är det en bra idé att använda sökfunktionen i din IDE för att dubbelkolla att du inte använder någon av de egenskaper som du har migrerat i ett integreringstest.

Kommentar

Vi har ändrat många konfigurationsegenskaper i den här ändringen. Med hjälp av spring-boot-properties-migrator kommer att hjälpa till att underlätta migreringen.

Globala konfigurationer

Med det moderna spring-cloud-azure-starter kan du definiera egenskaper som gäller för alla Azure SDK:er i namnområdet spring.cloud.azure. Den här funktionen stöds inte i det äldre azure-spring-boot-starter. De globala konfigurationerna kan delas in i fem kategorier, som visas i följande tabell:

Prefix beskrivning
spring.cloud.azure.client Konfigurerar transportklienterna under varje Azure SDK.
spring.cloud.azure.credential Konfigurerar hur du autentiserar med Microsoft Entra-ID.
spring.cloud.azure.profile Konfigurerar Azure-molnmiljön.
spring.cloud.azure.proxy Konfigurerar proxyalternativen och gäller för alla Azure SDK-klienter.
spring.cloud.azure.retry Konfigurerar återförsöksalternativen och gäller för alla Azure SDK-klienter. Återförsöksalternativen har stöd för en del av SDK:erna, det finns ingen spring.cloud.azure.cosmos.retry.

En fullständig lista över konfigurationer finns i Konfigurationsegenskaper för Spring Cloud Azure.

Konfigurera varje SDK

Mer information om konfigurationsalternativen på SDK-nivå finns i följande länkar:

Api-icke-bakåtkompatibla ändringar

Mer information om icke-bakåtkompatibla API-ändringar i varje bibliotek finns i följande länkar:

Biblioteksändringar

Icke-bakåtkompatibla ändringar i varje bibliotek introduceras på följande sätt.

Från azure-spring-boot-starter till spring-cloud-azure-starter

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-starter från version 3 av azure-spring-boot-starter.

Använd följande länkar för allmän information:

Beroendeändringar

Några onödiga beroenden inkluderades i de äldre artefakterna, som vi har tagit bort i de moderna Spring Cloud Azure 4.0-biblioteken. Se till att lägga till de borttagna beroendena manuellt i projektet för att förhindra oavsiktlig krasch.

I följande tabell visas borttagna beroenden:

Beroenden har tagits bort beskrivning
org.springframework.boot:spring-boot-starter-validation Inkludera valideringsstarten om du vill använda Hibernate Validator.

Från azure-spring-boot-starter-active-directory till spring-cloud-azure-starter-active-directory

Den här guiden är avsedd att hjälpa migreringen till spring-cloud-azure-starter-active-directory från version 3 av azure-spring-boot-starter-active-directory.

Använd följande länkar för allmän information:

Beroendeändringar

Vissa onödiga beroenden i den äldre artefakten har tagits bort sedan det moderna Spring Cloud Azure 4.0-biblioteket. Lägg till dessa borttagna beroenden i projektet för att förhindra oavsiktlig krasch.

I följande tabell visas borttagna beroenden:

Beroenden har tagits bort beskrivning
com.fasterxml.jackson.core:jackson-databind Lägg till det här beroendet i projektet om det behövs.
io.projectreactor.netty:reactor-netty Lägg till det här beroendet i projektet om det behövs.
org.springframework.boot:spring-boot-starter-validation Lägg till det här beroendet i projektet om det behövs.
org.springframework.boot:spring-boot-starter-webflux Lägg till det här beroendet i projektet om det behövs.

Ändringar i SDK-konfigurationen

Det här avsnittet innehåller ändringarna om de egenskaper som har lagts till, tagits bort och ändrats.

  • Följande två punkter är de viktigaste att uppmärksamma:
  1. Alla konfigurationsegenskapsnamns prefix har ändrats från azure.activedirectory till spring.cloud.azure.active-directory.
  2. Ny egenskap spring.cloud.azure.active-directory.enabled läggs till för att aktivera/inaktivera Microsoft Entra-relaterade funktioner. Standardvärdet är false.

Följande tabell visar egenskapsmappningarna mellan azure-spring-boot-starter-active-directory och spring-cloud-azure-starter-active-directory:

Äldre egenskaper Moderna egenskaper
azure.activedirectory.app-id-uri spring.cloud.azure.active-directory.app-id-uri
azure.activedirectory.application-type spring.cloud.azure.active-directory.application-type
azure.activedirectory.authorization-clients spring.cloud.azure.active-directory.authorization-clients
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.authorization-grant-type spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.authorization-grant-type
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.on-demand spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.on-demand
azure.activedirectory.authorization-clients.AZURE_CLIENT_NAME.scopes spring.cloud.azure.active-directory.authorization-clients.AZURE_CLIENT_NAME.scopes
azure.activedirectory.authenticate-additional-parameters spring.cloud.azure.active-directory.authenticate-additional-parameters
azure.activedirectory.base-uri spring.cloud.azure.active-directory.profile.environment.active-directory-endpoint
azure.activedirectory.client-id spring.cloud.azure.active-directory.credential.client-id
azure.activedirectory.client-secret spring.cloud.azure.active-directory.credential.client-secret
azure.activedirectory.graph-membership-uri Mer information finns i följande tabell.
azure.activedirectory.jwt-connect-timeout spring.cloud.azure.active-directory.jwt-connect-timeout.
azure.activedirectory.jwt-read-timeout spring.cloud.azure.active-directory.jwt-read-timeout.
azure.activedirectory.jwt-size-limit spring.cloud.azure.active-directory.jwt-size-limit.
azure.activedirectory.jwk-set-cache-lifespan spring.cloud.azure.active-directory.jwk-set-cache-lifespan.
azure.activedirectory.jwk-set-cache-refresh-time spring.cloud.azure.active-directory.jwk-set-cache-refresh-time
azure.activedirectory.post-logout-redirect-uri spring.cloud.azure.active-directory.post-logout-redirect-uri
azure.activedirectory.session-stateless spring.cloud.azure.active-directory.session-stateless
azure.activedirectory.redirect-uri-template spring.cloud.azure.active-directory.redirect-uri-template
azure.activedirectory.resource-server.claim-to-authority-prefix-map spring.cloud.azure.active-directory.resource-server.claim-to-authority-prefix-map
azure.activedirectory.resource-server.principal-claim-name spring.cloud.azure.active-directory.resource-server.principal-claim-name
azure.activedirectory.tenant-id spring.cloud.azure.active-directory.profile.tenant-id
azure.activedirectory.user-group.allowed-group-ids spring.cloud.azure.active-directory.user-group.allowed-group-ids
azure.activedirectory.user-group.allowed-group-names spring.cloud.azure.active-directory.user-group.allowed-group-names
azure.activedirectory.user-name-attribute spring.cloud.azure.active-directory.user-name-attribute
  • Värdetypen för följande egenskaper ändras från long till Duration:

    • jwt-connect-timeout
    • jwt-read-timeout
    • jwk-set-cache-lifespan
    • jwk-set-cache-refresh-time.
  • Följande egenskaper tas bort:

    • azure.activedirectory.allow-telemetri
    • azure.activedirectory.user-group.enable-full-list
    • azure.activedirectory.graph-base-uri
    • azure.activedirectory.graph-membership-uri
  • Följande egenskaper läggs till:

    • 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

Kommentar

Funktionen azure.activedirectory.graph-membership-uri för har ersatts av 2 egenskaper: spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint och spring.cloud.azure.active-directory.user-group.use-transitive-members. Den första egenskapen används för att ange värdnamnet och den andra en flagga för att använda URL-sökvägen: v1.0/me/memberOf eller v1.0/me/transitiveMemberOf.

Här följer några exempel på migrering:

  • Exempel 1. Fall 1

    • För äldre: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/memberOf

    • För modern: 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

  • Exempel 2. Ärende 2

    • För äldre: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/transitiveMemberOf

    • För modern: 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

API-ändringar

I följande tabell visas klassmappningarna från azure-spring-boot-starter-active-directory till spring-cloud-azure-starter-active-directory:

Äldre klass Modern klass
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

I det här avsnittet visas de borttagna klasserna från azure-spring-boot-starter-active-directory.

  • Äldre klass har tagits bort

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

Från azure-spring-boot-starter-active-directory-b2c till spring-cloud-azure-starter-active-directory-b2c

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-starter-active-directory-b2c från version 3 av azure-spring-boot-starter-active-directory-b2c.

Använd följande länkar för allmän information:

Beroendeändringar

Några onödiga beroenden inkluderades i de äldre artefakterna, som vi har tagit bort i de moderna Spring Cloud Azure 4.0-biblioteken. Se till att lägga till de borttagna beroendena manuellt i projektet för att förhindra oavsiktlig krasch.

I följande tabell visas borttagna beroenden:

Beroenden har tagits bort beskrivning
org.springframework.boot:spring-boot-starter-validation Inkludera valideringsstarten om du vill använda Hibernate Validator.

Ändringar i SDK-konfigurationen

Det här avsnittet innehåller ändringarna om de egenskaper som har lagts till, tagits bort och ändrats.

  • Följande två punkter är de viktigaste att uppmärksamma:
  1. Alla namn på konfigurationsegenskapen har ändrat prefixet från azure.activedirectory.b2c till spring.cloud.azure.active-directory.b2c.
  2. Ny egenskap spring.cloud.azure.active-directory.b2c.enabled läggs till för att tillåta aktivera/inaktivera Azure AD B2C-relaterade funktioner. Standardvärdet är "false".

I följande tabell visas egenskapsmappningarna från azure-spring-boot-starter-active-directory-b2c till spring-cloud-azure-starter-active-directory-b2c:

Äldre egenskaper Moderna egenskaper
azure.activedirectory.b2c.authenticate-additional-parameters spring.cloud.azure.active-directory.b2c.authenticate-additional-parameters
azure.activedirectory.b2c.authorization-clients spring.cloud.azure.active-directory.b2c.authorization-clients
azure.activedirectory.b2c.authorization-clients.<>AZURE_CLIENT_NAME.authorization-grant-type spring.cloud.azure.active-directory.b2c.authorization-clients.<>AZURE_CLIENT_NAME.authorization-grant-type
azure.activedirectory.b2c.authorization-clients.<>AZURE_CLIENT_NAME.scopes spring.cloud.azure.active-directory.b2c.authorization-clients.<>AZURE_CLIENT_NAME.scopes
azure.activedirectory.b2c.app-id-uri spring.cloud.azure.active-directory.b2c.app-id-uri
azure.activedirectory.b2c.base-uri spring.cloud.azure.active-directory.b2c.base-uri
azure.activedirectory.b2c.client-id spring.cloud.azure.active-directory.b2c.credential.client-id
azure.activedirectory.b2c.client-secret spring.cloud.azure.active-directory.b2c.credential.client-secret
azure.activedirectory.b2c.jwt-connect-timeout spring.cloud.azure.active-directory.b2c.jwt-connect-timeout
azure.activedirectory.b2c.jwt-read-timeout spring.cloud.azure.active-directory.b2c.jwt-read-timeout
azure.activedirectory.b2c.jwt-size-limit spring.cloud.azure.active-directory.b2c.jwt-size-limit
azure.activedirectory.b2c.login-flow spring.cloud.azure.active-directory.b2c.login-flow
azure.activedirectory.b2c.logout-success-url spring.cloud.azure.active-directory.b2c.logout-success-url
azure.activedirectory.b2c.reply-url spring.cloud.azure.active-directory.b2c.reply-url
azure.activedirectory.b2c.tenant-id spring.cloud.azure.active-directory.b2c.profile.tenant-id
azure.activedirectory.b2c.user-flows spring.cloud.azure.active-directory.b2c.user-flows
azure.activedirectory.b2c.user-name-attribute-name spring.cloud.azure.active-directory.b2c.user-name-attribute-name
  • Egenskaper har tagits bort från azure-spring-boot-starter-active-directory-b2c:

    • azure.activedirectory.b2c.allow-telemetri
    • azure.activedirectory.b2c.tenant
  • Värdetypen för följande egenskaper ändras från long till Duration:

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

API-ändringar

I följande tabell visas klassmappningarna från azure-spring-boot-starter-active-directory-b2c till spring-cloud-azure-starter-active-directory-b2c:

Äldre klass Modern klass
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

Från azure-spring-boot-starter-cosmos till spring-cloud-azure-starter-data-cosmos

Den här guiden är avsedd att hjälpa till vid migreringen till spring-cloud-azure-starter-data-cosmos från version 3 av azure-spring-boot-starter-cosmos.

Använd följande länkar för allmän information:

Ändringar i SDK-konfigurationen

Alla namn på konfigurationsegenskapen har ändrat prefixet från azure.cosmos till spring.cloud.azure.cosmos.

I följande tabell visas klassmappningarna från azure-spring-boot-starter-cosmos till spring-cloud-azure-starter-data-cosmos:

Äldre egenskaper Moderna egenskaper
azure.cosmos.connection-mode spring.cloud.azure.cosmos.connection-mode
azure.cosmos.consistency-level spring.cloud.azure.cosmos.consistency-level
azure.cosmos.database spring.cloud.azure.cosmos.database
azure.cosmos.key spring.cloud.azure.cosmos.key
azure.cosmos.populate-query-metrics spring.cloud.azure.cosmos.populate-query-metrics
azure.cosmos.uri spring.cloud.azure.cosmos.endpoint

Från azure-spring-boot-starter-keyvault-secrets till spring-cloud-azure-starter-keyvault-secrets

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-starter-keyvault-secrets från version 3 av azure-spring-boot-starter-keyvault-secrets.

Använd följande länkar för allmän information:

Ändringar i SDK-konfigurationen

Det här avsnittet innehåller ändringarna om de egenskaper som har lagts till, tagits bort och ändrats.

I följande tabell visas egenskapsmappningarna från azure-spring-boot-starter-keyvault-secrets till spring-cloud-azure-starter-keyvault-secrets:

Äldre egenskaper Moderna egenskaper
azure.keyvault.case-sensitive-keys spring.cloud.azure.keyvault.secret.property-source[n].case-sensitive
azure.keyvault.certificate-password spring.cloud.azure.keyvault.secret.property-source[n].credential.client-certificate-password
azure.keyvault.certificate-path spring.cloud.azure.keyvault.secret.property-source[n].credential.client-certificate-path
azure.keyvault.client-id spring.cloud.azure.keyvault.secret.property-source[n].credential.client-id
azure.keyvault.client-key spring.cloud.azure.keyvault.secret.property-source[n].credential.client-secret
azure.keyvault.enabled spring.cloud.azure.keyvault.secret.property-source-enabled och spring.cloud.azure.keyvault.secret.property-source-enabled
azure.keyvault.order Stöds inte längre. Använd ordningen i egenskapskällan[n] i stället.
azure.keyvault.refresh-interval spring.cloud.azure.keyvault.secret.property-source[n].refresh-interval
azure.keyvault.secret-keys spring.cloud.azure.keyvault.secret.property-source[n].secret-keys
azure.keyvault.tenant-id spring.cloud.azure.keyvault.secret.property-source[n].profile.tenant-id
azure.keyvault.uri spring.cloud.azure.keyvault.secret.property-source[n].endpoint
  • Egenskaper har tagits bort från spring-cloud-azure-starter-keyvault-secrets

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

Följande punkter bör du vara uppmärksam på:

  1. Alla namn på konfigurationsegenskapen har ändrat prefixet från azure.keyvault till spring.cloud.azure.keyvault.secret.
  2. spring.cloud.azure.keyvault.secret.enabled används för att aktivera alla Key Vault Secret-funktioner, inklusive att konfigurera key vault-hemliga klientbönor (som SecretClient och SecretAsyncClient) och lägga till KeyVaultPropertySource i ConfigurableEnvironment.
  3. spring.cloud.azure.keyvault.secret.property-source-enabled används för att aktivera alla KeyVaultPropertySource. Den börjar gälla endast när spring.cloud.azure.keyvault.secret.enabled=true.
  4. För vanliga Azure-egenskaper(som client, proxy, retry, credential, profile) och Key Vault-egenskaper(som endpoint, service-version). Om spring.cloud.azure.keyvault.secret.property-sources[n].PROPERTY_NAME inte har konfigurerats spring.cloud.azure.keyvault.secret.PROPERTY_NAME används.
  5. spring.cloud.azure.keyvault.secret.property-sources[n].resource är specifikt för en unik Azure-resurs, så om den inte är konfigurerad får den inte värde från andra platser.

Från azure-spring-boot-starter-servicebus-jms till spring-cloud-azure-starter-servicebus-jms

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-starter-servicebus-jms från version 3 av azure-spring-boot-starter-servicebus-jms.

Använd följande länkar för allmän information:

Ändringar i SDK-konfigurationen

Konfigurationstyp för spring.jms.servicebus.idle-timeout ändrad från long(millisekunder) till Duration mönster för läsbarhet.

Från azure-spring-boot-starter-storage till spring-cloud-azure-starter-storage-blob

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-starter-storage-blob från version 3 av azure-spring-boot-starter-storage.

Använd följande länkar för allmän information:

Ändringar i SDK-konfigurationen

Alla namn på konfigurationsegenskapen har ändrat prefixet från azure.storage till spring.cloud.azure.storage.blob.

I följande tabell visas egenskapsmappningarna från azure-spring-boot-starter-storage till spring-cloud-azure-starter-storage-blob:

Äldre egenskaper Moderna egenskaper
azure.storage.account-name spring.cloud.azure.storage.blob.account-name
azure.storage.account-key spring.cloud.azure.storage.blob.account-key
azure.storage.blob-endpoint spring.cloud.azure.storage.blob.endpoint

API-ändringar

I följande tabell visas klassmappningarna från azure-spring-boot-starter-storage till spring-cloud-azure-starter-storage-blob:

Äldre klass Modern klass
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

Från azure-spring-boot-starter-storage till spring-cloud-azure-starter-storage-file-share

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-starter-storage-file-share från version 3 av azure-spring-boot-starter-storage.

Använd följande länkar för allmän information:

Ändringar i SDK-konfigurationen

Alla namn på konfigurationsegenskapen har ändrat prefixet från azure.storage till spring.cloud.azure.storage.fileshare.

I följande tabell visas egenskapsmappningarna från azure-spring-boot-starter-storage till spring-cloud-azure-starter-storage-file-share:

Äldre egenskaper Moderna egenskaper
azure.storage.account-name spring.cloud.azure.storage.fileshare.account-name
azure.storage.account-key spring.cloud.azure.storage.fileshare.account-key
azure.storage.file-endpoint spring.cloud.azure.storage.fileshare.endpoint

API-ändringar

I följande tabell visas klassmappningarna från azure-spring-boot-starter-storage till spring-cloud-azure-starter-storage-file-share:

Äldre klass Modern klass
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

Från azure-spring-cloud-starter-eventhubs till spring-cloud-azure-starter-integration-eventhubs

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-starter-integration-eventhubs från version 2 av azure-spring-cloud-starter-eventhubs.

Använd följande länkar för allmän information:

Ändringar i SDK-konfigurationen

Viktigt!

Konfigurationsprefixet har ändrats från spring.cloud.azure.eventhub till spring.cloud.azure.eventhubs.

Ändringar av underordnade poster för det här prefixet finns i följande tabeller:

I följande tabell visas egenskapsmappningar från azure-spring-cloud-starter-eventhubs till spring-cloud-azure-starter-integration-eventhubs:

Äldre egenskaper Moderna egenskaper
spring.cloud.azure.resource-group spring.cloud.azure.eventhubs.resource.resource-group
spring.cloud.azure.eventhub.namespace spring.cloud.azure.eventhubs.namespace
spring.cloud.azure.eventhub.connection-string spring.cloud.azure.eventhubs.connection-string
spring.cloud.azure.eventhub.checkpoint-storage-account spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name
spring.cloud.azure.eventhub.checkpoint-access-key spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key
spring.cloud.azure.eventhub.checkpoint-container spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name

Du kan till exempel ändra från:

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}

till:

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}

API-ändringar

  • Om du vill se ändringar i lyssnarkommentarerna kan du läsa migreringsguiden <<för biblioteket migration-azure-spring-cloud-messaging, azure-spring-cloud-messaging>> .
  • Släpp EventHubOperation med den prenumererande funktionen flyttad till klassen EventHubsMessageListenerContainer och den sändande funktionen flyttades till EventHubsTemplate.
  • Byt EventHubInboundChannelAdapterEventHubsInboundChannelAdapter namn på så att det överensstämmer med tjänsten för Azure Event Hubs.
  • Ändra konstruktorn från EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String) till EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) och EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Ändra CheckpointConfig instansieringsformatet till den enkla konstruktorn i stället för byggstil.
  • Släpp API EventHubOperation#setCheckpointConfig. Om du vill ange kontrollpunktskonfigurationen för det inkommande kanalkortet kan användarna anropa metoden EventHubsContainerProperties#setCheckpointConfig.
  • Släpp API EventHubOperation#setBatchConsumerConfig. Om du vill ange den batchkrävande konfigurationen för det inkommande kanalkortet kan användarna anropa de två metoderna EventHubsContainerProperties#getBatch#setMaxSize och EventHubsContainerProperties#getBatch#setMaxWaitTime under tiden.
  • För batchförbrukningsläget ändrar du meddelandehuvudnamnen som konverterats från batchbaserade meddelanden.
    • Ändra meddelanderubrik från azure_eventhub_enqueued_time till azure_eventhubs_batch_converted_enqueued_time.
    • Ändra meddelanderubrik från azure_eventhub_offset till azure_eventhubs_batch_converted_offset.
    • Ändra meddelanderubrik från azure_eventhub_sequence_number till azure_eventhubs_batch_converted_sequence_number.
    • Ändra meddelanderubrik från azure_partition_key till azure_batch_converted_partition_key.
  • När du publicerar meddelanden till Event Hubs ignorerar du alla meddelandehuvuden som konverterats från batchbaserade meddelanden. Rubrikerna omfattar:
    • 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
  • Kontrollpunktsläget BATCH fungerar bara i batchanvändande läge nu, vilket kan aktiveras genom att skicka ListenerMode.BATCH till EventHubsInboundChannelAdapter-konstruktorn.

I följande tabell visas klassmappningarna från azure-spring-cloud-starter-eventhubs till spring-cloud-azure-starter-integration-eventhubs:

Äldre klass Modern klass
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

Exempelkodfragment

  • EventHubsInboundChannelAdapter exempelkod:

    Äldre kod:

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

    Modern kod:

    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 exempelkod:

    Äldre kod:

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

    Modern kod:

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

Från azure-spring-integration-eventhubs till spring-integration-azure-eventhubs

Den här guiden är avsedd att underlätta migreringen till spring-integration-azure-eventhubs från version 2 av azure-spring-integration-eventhubs.

API-ändringar

  • Släpp EventHubOperation med den prenumererande funktionen flyttad till klassen EventHubsMessageListenerContainer och den sändande funktionen flyttades till EventHubsTemplate.
  • Byt EventHubInboundChannelAdapterEventHubsInboundChannelAdapter namn på så att det överensstämmer med tjänsten för Azure Event Hubs.
  • Ändra konstruktorn från EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String) till EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) och EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Ändra CheckpointConfig instansieringsformatet till den enkla konstruktorn i stället för byggstil.
  • Släpp API EventHubOperation#setCheckpointConfig. Om du vill ange kontrollpunktskonfigurationen för det inkommande kanalkortet kan användarna anropa metoden EventHubsContainerProperties#setCheckpointConfig.
  • Släpp API EventHubOperation#setBatchConsumerConfig. Om du vill ange den batchkrävande konfigurationen för det inkommande kanalkortet kan användarna anropa de två metoderna EventHubsContainerProperties#getBatch#setMaxSize och EventHubsContainerProperties#getBatch#setMaxWaitTime under tiden.
  • För batchförbrukningsläget ändrar du meddelandehuvudnamnen som konverterats från batchbaserade meddelanden.
    • Ändra meddelanderubrik från azure_eventhub_enqueued_time till azure_eventhubs_batch_converted_enqueued_time.
    • Ändra meddelanderubrik från azure_eventhub_offset till azure_eventhubs_batch_converted_offset.
    • Ändra meddelanderubrik från azure_eventhub_sequence_number till azure_eventhubs_batch_converted_sequence_number.
    • Ändra meddelanderubrik från azure_partition_key till azure_batch_converted_partition_key.
  • När du publicerar meddelanden till Event Hubs ignorerar du alla meddelandehuvuden som konverterats från batchbaserade meddelanden. Rubrikerna omfattar:
    • 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
  • Kontrollpunktsläget BATCH fungerar bara i batchanvändande läge nu, vilket kan aktiveras genom att skicka ListenerMode.BATCH till EventHubsInboundChannelAdapter-konstruktorn.

I följande tabell visas klassmappningarna från azure-spring-integration-eventhubs till spring-integration-azure-eventhubs:

Äldre klass Modern klass
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

Från azure-spring-cloud-starter-servicebus till spring-cloud-azure-starter-integration-servicebus

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-starter-integration-servicebus från version 2 av azure-spring-cloud-starter-servicebus.

Använd följande länkar för allmän information:

Ändringar i SDK-konfigurationen

För alla konfigurationsalternativ som stöds i spring-cloud-azure-starter-integration-servicebusförblir prefixet som spring.cloud.azure.servicebus.

I följande tabell visas egenskapsmappningarna från azure-spring-cloud-starter-servicebus till spring-cloud-azure-starter-integration-servicebus:

Äldre egenskaper Moderna egenskaper
spring.cloud.azure.resource-group spring.cloud.azure.servicebus.resource.resource-group
spring.cloud.azure.servicebus.transport-type spring.cloud.azure.servicebus.client.transport-type
spring.cloud.azure.servicebus.retry-options.retry-mode spring.cloud.azure.servicebus.retry.mode
spring.cloud.azure.servicebus.retry-options.max-retries spring.cloud.azure.servicebus.retry.exponential.max-retries eller spring.cloud.azure.servicebus.retry.fixed.max-retries, bör konfigureras beroende på spring.cloud.azure.servicebus.retry.mode=fixed eller exponentialential
spring.cloud.azure.servicebus.retry-options.delay spring.cloud.azure.servicebus.retry.exponential.base-delay eller spring.cloud.azure.servicebus.retry.fixed.delay, bör konfigureras beroende på spring.cloud.azure.servicebus.retry.mode=fixed eller exponentiellt
spring.cloud.azure.servicebus.retry-options.max-delay spring.cloud.azure.servicebus.retry.exponential.max-delay
spring.cloud.azure.servicebus.retry-options.try-timeout spring.cloud.azure.servicebus.retry.try-timeout

API-ändringar

  • Släpp ServiceBusQueueOperation och ServiceBusTopicOperation med den prenumererande funktionen flyttad till klassen ServiceBusMessageListenerContainer och den sändande funktionen flyttades till ServiceBusTemplate.
  • Släpp ServiceBusQueueInboundChannelAdapter och ServiceBusTopicInboundChannelAdapteroch flytta funktionen för att lyssna på en Service Bus-kö/ämnesentitet till ServiceBusInboundChannelAdapter.
  • Ändra konstruktorn från ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String) till ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) och ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Ändra konstruktorn från ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String) till ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) och ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Släpp API:er ServiceBusQueueOperation#setCheckpointConfig och ServiceBusTopicOperation#setCheckpointConfig. Om du vill ange kontrollpunktskonfigurationen för det inkommande kanalkortet kan användarna anropa metoden ServiceBusContainerProperties#setAutoComplete i stället. Om du vill inaktivera läget för automatisk komplettering motsvarar MANUAL det kontrollpunktsläget och för att aktivera det utlöses RECORD läget.
  • Släpp API:er ServiceBusQueueOperatio#setClientConfig och ServiceBusTopicOperation#setClientConfig. För att konfigurera den underliggande ServiceBusProcessorClient som används av det inkommande kanalkortet kan användarna använda ServiceBusContainerProperties i stället.
  • Släpp CompletableFuture supporten i ServiceBusTemplate och DefaultMessageHandler, i Reactor stället.
  • Lägg till nytt API för ServiceBusTemplate#setDefaultEntityType för att ange entitetstypen, vilket krävs när ingen böna PropertiesSupplier&lt;String, ProducerProperties&gt; anges för ProducerProperties#entityType.
  • Släpp meddelanderubriken AzureHeaders.RAW_ID. Använd ServiceBusMessageHeaders.MESSAGE_ID i stället.

I följande tabell visas klassmappningarna från azure-spring-cloud-starter-servicebus till spring-cloud-azure-starter-integration-servicebus:

Äldre klass Modern klass
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

Exempelkodfragment

  • ServiceBusInboundChannelAdapter exempelkod:

    Äldre kod för användning ServiceBusQueueInboundChannelAdapter eller 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;
        }
    
    }
    

    Modern kod:

    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 exempelkod:

    Äldre kod, med kön som exempel:

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

    Modern kod:

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

Från azure-spring-integration-servicebus till spring-integration-azure-servicebus

Den här guiden är avsedd att underlätta migreringen till spring-integration-azure-servicebus från version 2 av azure-spring-integration-servicebus.

API-ändringar

  • Släpp ServiceBusQueueOperation och ServiceBusTopicOperation med den prenumererande funktionen flyttad till klassen ServiceBusMessageListenerContainer och den sändande funktionen flyttades till ServiceBusTemplate.
  • Släpp ServiceBusQueueInboundChannelAdapter och ServiceBusTopicInboundChannelAdapteroch flytta funktionen för att lyssna på en Service Bus-kö/ämnesentitet till ServiceBusInboundChannelAdapter.
  • Ändra konstruktorn från ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String) till ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) och ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Ändra konstruktorn från ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String) till ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) och ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Släpp API:er ServiceBusQueueOperation#setCheckpointConfig och ServiceBusTopicOperation#setCheckpointConfig. Om du vill ange kontrollpunktskonfigurationen för det inkommande kanalkortet kan användarna anropa metoden ServiceBusContainerProperties#setAutoComplete i stället. Om du vill inaktivera läget för automatisk komplettering motsvarar MANUAL det kontrollpunktsläget och för att aktivera det utlöses RECORD läget.
  • Släpp API:er ServiceBusQueueOperation#setClientConfig och ServiceBusTopicOperation#setClientConfig. För att konfigurera den underliggande ServiceBusProcessorClient som används av det inkommande kanalkortet kan användarna använda ServiceBusContainerProperties i stället.
  • Släpp CompletableFuture supporten i ServiceBusTemplate och DefaultMessageHandler, i Reactor stället.
  • Lägg till nytt API för ServiceBusTemplate#setDefaultEntityType för att ange entitetstypen, vilket krävs när ingen böna PropertiesSupplier&lt;String, ProducerProperties&gt; anges för ProducerProperties#entityType.
  • Släpp meddelanderubriken AzureHeaders.RAW_ID. Använd ServiceBusMessageHeaders.MESSAGE_ID i stället.

I följande tabell visas klassmappningarna från azure-spring-integration-servicebus till spring-integration-azure-servicebus:

Äldre klass Modern klass
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

Från azure-spring-cloud-starter-storage-queue till spring-cloud-azure-starter-integration-storage-queue

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-starter-integration-storage-queue från version 2 av azure-spring-cloud-starter-storage-queue.

Använd följande länkar för allmän information:

Ändringar i SDK-konfigurationen

Alla namn på konfigurationsegenskapen har ändrat prefixet från spring.cloud.azure.storage till spring.cloud.azure.storage.queue.

I följande tabell visas egenskapsmappningarna från azure-spring-cloud-starter-storage-queue till spring-cloud-azure-starter-integration-storage-queue:

Äldre egenskaper Moderna egenskaper
spring.cloud.azure.storage.account spring.cloud.azure.storage.queue.account-name
spring.cloud.azure.storage.access-key spring.cloud.azure.storage.queue.account-key
spring.cloud.azure.storage.resource-group spring.cloud.azure.storage.queue.resource.resource-group

API-ändringar

  • Släpp StorageQueueOperation och ange StorageQueueTemplate i stället.
  • Släpp checkpoint-mode konfigurationen i StorageQueueTemplate, endast stöd för MANUAL läget.

I följande tabell visas klassmappningarna från azure-spring-cloud-starter-storage-queue till spring-cloud-azure-starter-integration-storage-queue.

Äldre klass Modern klass
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

Från azure-spring-integration-storage-queue till spring-integration-azure-storage-queue

Den här guiden är avsedd att underlätta migreringen till spring-integration-azure-storage-queue från version 2 av azure-spring-integration-storage-queue.

API-ändringar

  • Släpp StorageQueueOperation och ange StorageQueueTemplate i stället.
  • Släpp checkpoint-mode konfigurationen i StorageQueueTemplate, endast stöd för MANUAL läget.

I följande tabell visas klassmappningarna från azure-spring-integration-storage-queue till spring-integration-azure-storage-queue.

Äldre klass Modern klass
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

Från azure-spring-cloud-stream-binder-eventhubs till spring-cloud-azure-stream-binder-eventhubs

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-stream-binder-eventhubs från version 2 av azure-spring-cloud-stream-binder-eventhubs.

Använd följande länkar för allmän information:

Ändringar i SDK-konfigurationen

Viktigt!

Konfigurationsprefixet har ändrats från spring.cloud.azure.eventhub till spring.cloud.azure.eventhubs.

Viktigt!

Bindemedelstypen har bytt namn från: eventhub till eventhubs.

Ändringar av underordnade poster för följande prefix finns i följande tabell.

I följande tabell visas egenskapsmappningar från azure-spring-cloud-stream-binder-eventhubs till spring-cloud-azure-stream-binder-eventhubs:

Äldre egenskaper Moderna egenskaper
spring.cloud.azure.resource-group spring.cloud.azure.eventhubs.resource.resource-group
spring.cloud.azure.eventhub.namespace spring.cloud.azure.eventhubs.namespace
spring.cloud.azure.eventhub.connection-string spring.cloud.azure.eventhubs.connection-string
spring.cloud.azure.eventhub.checkpoint-storage-account spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name
spring.cloud.azure.eventhub.checkpoint-access-key spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key
spring.cloud.azure.eventhub.checkpoint-container spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name
spring.cloud.stream.eventhub.bindings.binding-name.consumer.max-batch-size spring.cloud.stream.eventhubs.bindings.binding-name.consumer.batch.max-size
spring.cloud.stream.eventhub.bindings.binding-name.consumer.max-wait-time spring.cloud.stream.eventhubs.bindings.binding-name.consumer.batch.max-wait-time
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-mode spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.mode
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-count spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.count
spring.cloud.stream.eventhub.bindings.binding-name.consumer.checkpoint-interval spring.cloud.stream.eventhubs.bindings.binding-name.consumer.checkpoint.interval
spring.cloud.stream.eventhub.bindings.binding-name.consumer.start-position spring.cloud.stream.eventhubs.bindings.binding-name.consumer.initial-partition-event-position

Kommentar

Konfigurationens start-position värdetyp ändras också från en uppräkning till com.azure.spring.integration.core.api.StartPosition en map av StartPositionProperties för varje partition. Nyckeln är alltså partitions-ID:t, och värdet innehåller com.azure.spring.cloud.service.eventhubs.properties.StartPositionProperties egenskaper för offset, sekvensnummer, köad datumtid och huruvida inkluderande.

Exempel på konfigurationsmigrering

Om du vill använda anslutningssträng för autentisering och migrera ovanstående egenskaper visas följande konfigurationsändringar:

Äldre konfiguration:

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

Modern konfiguration:

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

Om du använder säkerhetsobjekt i stället för anslutningssträng ansluter programmet i versioner före 4.0 först till Azure Resource Manager (ARM) med det angivna säkerhetsobjektet och hämtar sedan anslutningssträng för det angivna namnområdet med ARM. Till slut använder programmet den hämtade anslutningssträng för att ansluta till Azure Event Hubs. På så sätt bör det angivna säkerhetsobjektet beviljas rollen Deltagare för att hämta det associerade Azure Event Hubs-namnområdet.

För Azure Spring Apps 4.0 tillhandahåller vi två sätt att utnyttja säkerhetsobjekt för autentisering. En använder fortfarande huvudnamnen för att ansluta till ARM och hämta de anslutningssträng där Contributor rollen krävs för huvudnamnen. Den andra använder säkerhetsobjekt för att autentisera till Microsoft Entra-ID och sedan ansluta till Azure Event Hubs direkt. I det här fallet Contributor är rollen inte längre nödvändig, medan andra Data relaterade roller krävs för meddelandeåtgärder. Information om hur du kontrollerar att säkerhetsobjektet har beviljats tillräcklig behörighet för att komma åt Azure-resursen finns i Auktorisera åtkomst med Microsoft Entra-ID.

För autentisering baserat på ARM, med tjänstens huvudnamn som exempel, visas konfigurationsmigreringen på följande sätt, där den tilldelade rollen inte bör ändras:

Äldre konfiguration:

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}

Kommentar

De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera en klientorganisationsapp till flera klientorganisationer på Microsoft Entra-ID.

Modern konfiguration, egenskaper för Azure-prenumerations-ID och resursgrupp krävs:

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}

Kommentar

De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera en klientorganisationsapp till flera klientorganisationer på Microsoft Entra-ID.

Du kan också migrera för att autentisera och auktorisera med Microsoft Entra-ID direkt utan att göra en omväg till ARM. Se till att ge säkerhetsobjektet nödvändiga Data roller för meddelandeåtgärder. Konfigurationsexemplen för tjänstens huvudnamn och den hanterade identiteten visas på följande sätt:

  • Med tjänstens huvudnamn

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

Kommentar

De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera en klientorganisationsapp till flera klientorganisationer på Microsoft Entra-ID.

  • Med en hanterad identitet

    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}
    

API-ändringar

I följande tabell visas klassmappningarna från azure-spring-cloud-stream-binder-eventhubs till spring-cloud-azure-stream-binder-eventhubs.

Äldre klass Modern klass
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

Från azure-spring-cloud-stream-binder-servicebus-* till spring-cloud-azure-stream-binder-servicebus

Den här guiden är avsedd att underlätta migreringen till spring-cloud-azure-stream-binder-servicebus från version 2 av azure-spring-cloud-stream-binder-servicebus-queue eller azure-spring-cloud-stream-binder-servicebus-topic.

Använd följande länkar för allmän information:

Ändringar i SDK-konfigurationen

Viktigt!

Äldre pärm libaries är azure-spring-cloud-stream-binder-servicebus-queue och azure-spring-cloud-stream-binder-servicebus-topic, och nu sammanfogas de till en spring-cloud-azure-stream-binder-servicebus.

Viktigt!

Bindemedelstypen kombineras från servicebus-queue och servicebus-topic som servicebus.

I följande tabell visas de nya konfigurationsegenskaperna spring-cloud-azure-stream-binder-servicebusför :

Moderna egenskaper beskrivning
spring.cloud.stream.servicebus.bindings.binding-name.producer.entity-type Om du använder den sändande funktionen måste du ange entitetstypen, som du kan ange till ämne eller kö.

I följande tabell visas egenskapsmappningarna från azure-spring-cloud-stream-binder-servicebus-* till spring-cloud-azure-stream-binder-servicebus:

Äldre egenskaper Moderna egenskaper
spring.cloud.azure.resource-group spring.cloud.azure.servicebus.resource.resource-group
spring.cloud.azure.servicebus.transport-type spring.cloud.azure.servicebus.client.transport-type
spring.cloud.azure.servicebus.retry-options.retry-mode spring.cloud.azure.servicebus.retry.mode
spring.cloud.azure.servicebus.retry-options.max-retries spring.cloud.azure.servicebus.retry.exponential.max-retries eller spring.cloud.azure.servicebus.retry.fixed.max-retries, bör konfigureras beroende på spring.cloud.azure.servicebus.retry.mode=fixed eller exponentialential
spring.cloud.azure.servicebus.retry-options.delay spring.cloud.azure.servicebus.retry.exponential.base-delay eller spring.cloud.azure.servicebus.retry.fixed.delay, bör konfigureras beroende på spring.cloud.azure.servicebus.retry.mode=fixed eller exponentiellt
spring.cloud.azure.servicebus.retry-options.max-delay spring.cloud.azure.servicebus.retry.exponential.max-delay
spring.cloud.azure.servicebus.retry-options.try-timeout spring.cloud.azure.servicebus.retry.try-timeout
spring.cloud.stream.servicebus.queue.bindings.* spring.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.Samtidighet spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions/max-concurrent-calls
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.checkpoint-mode spring.cloud.stream.servicebus.bindings.binding-name.consumer.automatisk komplettering
spring.cloud.stream.servicebus.topic.bindings.* spring.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.Samtidighet spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions/max-concurrent-calls
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.checkpoint-mode spring.cloud.stream.servicebus.bindings.binding-name.consumer.automatisk komplettering

Kommentar

Samtidighetsegenskapen ersätts av maxConcurrentSessions när sessionsEnabled är true och maxConcurrentCalls när sessionsEnabled är false.

Kommentar

Aktivering av automatisk komplettering är lika med RECORD kontrollpunktsläget och i motsatt MANUAL läge.

Exempel på konfigurationsmigrering

Äldre konfiguration, med kön som exempel:

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

Modern konfiguration:

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

Om du använder säkerhetsobjekt i stället för anslutningssträng ansluter programmet i versioner före 4.0 först till Azure Resource Manager (ARM) med det angivna säkerhetsobjektet och hämtar sedan anslutningssträng för det angivna namnområdet med ARM. Till slut använder programmet den hämtade anslutningssträng för att ansluta till Azure Service Bus. På så sätt bör det angivna säkerhetsobjektet beviljas rollen Deltagare för att hämta det associerade Azure Service Bus-namnområdet.

För Azure Spring Apps 4.0 tillhandahåller vi två sätt att utnyttja säkerhetsobjekt för autentisering. En använder fortfarande huvudnamnen för att ansluta till ARM och hämta de anslutningssträng där Contributor rollen krävs för huvudnamnen. Den andra använder säkerhetsobjekt för att autentisera till Microsoft Entra-ID och sedan ansluta till Azure Service Bus direkt. I det här fallet Contributor är rollen inte längre nödvändig, medan andra Data relaterade roller krävs för meddelandeåtgärder. Information om hur du kontrollerar att säkerhetsobjektet har beviljats tillräcklig behörighet för att komma åt Azure-resursen finns i Auktorisera åtkomst med Microsoft Entra-ID.

För autentisering baserat på ARM, med tjänstens huvudnamn som exempel, visas konfigurationsmigreringen på följande sätt, där den tilldelade rollen inte bör ändras:

Äldre konfiguration:

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}

Kommentar

De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera en klientorganisationsapp till flera klientorganisationer på Microsoft Entra-ID.

Modern konfiguration, egenskaper för Azure-prenumerations-ID och resursgrupp krävs:

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}

Kommentar

De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera en klientorganisationsapp till flera klientorganisationer på Microsoft Entra-ID.

Du kan också migrera för att autentisera och auktorisera med Microsoft Entra-ID direkt utan att göra en omväg till ARM. Se till att ge säkerhetsobjektet nödvändiga Data roller för meddelandeåtgärder. Konfigurationsexemplen för tjänstens huvudnamn och den hanterade identiteten visas på följande sätt:

  • Med tjänstens huvudnamn

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

Kommentar

De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera en klientorganisationsapp till flera klientorganisationer på Microsoft Entra-ID.

  • Med en hanterad identitet

    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}
    

API-ändringar

  • Släpp meddelanderubriken AzureHeaders.RAW_ID. Använd ServiceBusMessageHeaders.MESSAGE_ID i stället.

I följande tabell visas klassmappningarna från azure-spring-cloud-stream-binder-eventhubs till spring-cloud-azure-stream-binder-eventhubs.

Äldre klass Modern klass
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

Biblioteket com.azure.spring:azure-spring-cloud-messaging är inte klart för 4.0. Funktionen för lyssnarkommentarer är under omdesign, så anteckningarna @AzureMessageListener, @AzureMessageListenersoch @EnableAzureMessaging stöds inte för närvarande.