Udostępnij za pośrednictwem


Przewodnik migracji dla platformy Spring Cloud Azure 4.0

Ten przewodnik ułatwia migrację do usługi Spring Cloud Azure 4.0 ze starszych bibliotek Azure Spring.

Wprowadzenie

Wywołamy biblioteki, których identyfikator grupy i identyfikator artefaktu są zgodne ze wzorcem com.azure.spring:spring-cloud-azure-*nowoczesnych bibliotek oraz bibliotek z wzorcem com.azure.spring:azure-spring-boot-*, com.azure.spring:azure-spring-cloud-*lub com.azure.spring:azure-spring-integration-*starszych bibliotek.

Ten przewodnik koncentruje się na porównaniach równoległych dla podobnych konfiguracji między nowoczesnymi i starszymi bibliotekami.

Przyjęto znajomość pakietu com.azure.spring:azure-spring-boot-*, com.azure.spring:azure-spring-cloud-* lub com.azure.spring:azure-spring-integration-*.

Jeśli dopiero zaczynasz korzystać z bibliotek platformy Spring Cloud Azure 4.0, zapoznaj się z przewodnikiem dewelopera Spring Cloud Azure a nie w tym przewodniku.

Korzyści z migracji

Naturalne pytanie, które należy zadać podczas rozważania, czy należy przyjąć nową wersję, czy bibliotekę, jest jego korzyścią. Ponieważ Azure dojrzała i została włączona przez bardziej zróżnicowaną grupę deweloperów, skupiliśmy się na uczeniu się wzorców i praktyk, aby jak najlepiej wspierać produktywność deweloperów i zrozumieć luki, które mają biblioteki Spring Cloud Azure.

Było kilka obszarów spójnych opinii wyrażonych w bibliotekach spring cloud Azure. Najważniejsze jest to, że biblioteki dla różnych usług Azure nie włączyły pełnego zestawu konfiguracji. Ponadto niespójność nazw projektów, identyfikatorów artefaktów, wersji i konfiguracji sprawiła, że krzywa nauki jest stroma.

Aby ulepszyć środowisko programistyczne w bibliotekach spring cloud Azure, wprowadzono zestaw wytycznych projektowych zapewniających, że biblioteki spring cloud Azure mają naturalny i idiotyczny charakter w odniesieniu do ekosystemu Spring. Dalsze szczegóły są dostępne w design doc dla osób zainteresowanych.

Usługa Spring Cloud Azure 4.0 udostępnia wspólne środowisko w bibliotekach integrujących się z różnymi projektami Spring, na przykład Spring Boot, Spring Integration, Spring Cloud Stream itd. Wspólne środowisko obejmuje:

  • Ujednolicony model BOM obejmujący wszystkie biblioteki spring cloud Azure 4.0.
  • Spójna konwencja nazewnictwa artefaktów.
  • Ujednolicony sposób konfigurowania poświadczeń, serwera proxy, ponawiania prób, środowiska chmury i ustawień warstwy transportu.
  • Obsługa wszystkich metod uwierzytelniania obsługiwanych przez usługę Azure Service lub zestaw SDK usługi Azure.

Przegląd

Ten przewodnik migracji składa się z następujących sekcji:

  • Zmiany nazewnictwa aplikacji Spring Cloud Azure 4.0
  • Zmiany artefaktów: zmieniono nazwę/dodano/usunięto
  • Zmiany zależności
  • Zmiany uwierzytelniania
  • Właściwości konfiguracji
  • Zmiany powodujące niezgodność interfejsu API
  • Zmiany w bibliotece

Zmiany nazewnictwa

Nigdy nie było spójnej ani oficjalnej nazwy, aby wywołać wszystkie biblioteki spring cloud Azure. Niektóre z nich zostały nazwane Azure Spring Boot, a niektóre z nich Spring on Azure. Od wersji 4.0 zaczęliśmy używać nazwy projektu Spring Cloud Azure do reprezentowania wszystkich bibliotek Azure Spring.

lista BOM

Kiedyś dostarczaliśmy dwa elementy BOM dla naszych bibliotek, azure-spring-boot-bom i azure-spring-cloud-dependencies, ale połączyliśmy te dwa elementy BOM w jeden BOM od wersji 4.0, spring-cloud-azure-dependencies. Dodaj wpis w sekcji dependencyManagement projektu, aby skorzystać z zarządzania zależnościami.

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

Nuta

Jeśli używasz platformy Spring Boot 4.0.x, pamiętaj, aby ustawić spring-cloud-azure-dependencies wersję na 7.1.0.

Jeśli używasz platformy Spring Boot 3.5.x, pamiętaj, aby ustawić spring-cloud-azure-dependencies wersję na 6.2.0.

Jeśli używasz platformy Spring Boot 3.1.x-3.5.x, pamiętaj, aby ustawić spring-cloud-azure-dependencies wersję na 5.25.0.

Jeśli używasz środowiska Spring Boot 2.x, ustaw wersję spring-cloud-azure-dependencies na 4.20.0.

Tę listę materiałów (BOM) należy skonfigurować w sekcji <dependencyManagement> pliku pom.xml. Dzięki temu wszystkie zależności usługi Spring Cloud Azure korzystają z tej samej wersji.

Aby uzyskać więcej informacji na temat wersji używanej dla tego modelu BOM, zobacz Which Version of Spring Cloud Azure Should I Use (Wersja platformy Spring Cloud Azure powinna być używana.

Zmiany artefaktów: zmieniono nazwę/dodano/usunięto

Identyfikatory grup są takie same w przypadku nowoczesnych i starszych bibliotek platformy Spring Cloud Azure. Wszystkie są com.azure.spring. Identyfikatory artefaktów dla nowoczesnych bibliotek platformy Spring Cloud Azure uległy zmianie. Zgodnie z tym, do którego projektu spring należy, Spring Boot, Spring Integration lub Spring Cloud Stream, wzorzec identyfikatorów artefaktów może być spring-cloud-azure-starter-[service], spring-integration-azure-[service]lub spring-cloud-azure-stream-binder-[service]. Starsze szablony startowe dla każdego z nich mają identyfikator artefaktu zgodnie ze wzorcem azure-spring-*. Zapewnia to szybki i dostępny środek ułatwiający zrozumienie, niezależnie od tego, czy używasz nowoczesnych, czy starszych startów.

W procesie tworzenia platformy Spring Cloud Azure 4.0 zmieniliśmy nazwę niektórych artefaktów, aby były zgodne z nowymi konwencjami nazewnictwa, usunięto niektóre artefakty, aby funkcjonalność mogła zostać umieszczona w bardziej odpowiednim artefaktzie i dodaliśmy nowe artefakty, aby lepiej obsługiwać niektóre scenariusze.

W poniższej tabeli przedstawiono mapowania między starszym identyfikatorem artefaktu a nowoczesnym identyfikatorem artefaktu:

Identyfikator starszego artefaktu Identyfikator nowoczesnego artefaktu Opis
azure-spring-boot-starter spring-cloud-azure-starter Ten artefakt został usunięty ze wszystkimi funkcjami, które można scalić z nowym artefaktem spring-cloud-azure-starter.
azure-spring-boot-starter-active-directory spring-cloud-azure-starter-active-directory Zmieniono nazwę artefaktu.
azure-spring-boot-starter-active-directory-b2c spring-cloud-azure-starter-active-directory-b2c Zmieniono nazwę artefaktu.
azure-spring-boot-starter-cosmos spring-cloud-azure-starter-data-cosmos Zmieniono nazwę artefaktu, aby dodać data wskazującą użycie Azure Cosmos DB Spring Data.
azure-spring-boot-starter-keyvault-certificates nie dotyczy Nieuwzględniane w tej wersji, ale będą obsługiwane w nowszej wersji.
azure-spring-boot-starter-keyvault-secrets spring-cloud-azure-starter-keyvault-secrets Zmieniono nazwę artefaktu.
azure-spring-boot-starter-servicebus-jms spring-cloud-azure-starter-servicebus-jms Zmieniono nazwę artefaktu.
azure-spring-boot-starter-storage spring-cloud-azure-starter-storage-blob
spring-cloud-azure-starter-storage-file-share
Starszy artefakt zawiera funkcje zarówno obiektu blob magazynu, jak i udziału plików, które zostały umieszczone w dwóch oddzielnych artefaktach w wersji 4.0 spring-cloud-azure-starter-storage-blob i spring-cloud-azure-starter-storage-file-share.
azure-spring-boot nie dotyczy Ten artefakt został usunięty ze wszystkimi funkcjami, które można scalić z nowym artefaktem spring-cloud-azure-autoconfigure.
azure-spring-cloud-autoconfigure nie dotyczy Ten artefakt został usunięty ze wszystkimi funkcjami, które można scalić z nowym artefaktem spring-cloud-azure-autoconfigure.
azure-spring-cloud-context nie dotyczy Ten artefakt został usunięty ze wszystkimi funkcjami, które można scalić z nowymi artefaktami spring-cloud-azure-autoconfigure i spring-cloud-azure-resourcemanager.
azure-spring-cloud-messaging spring-messaging-azure Adnotacja odbiornika obsługi komunikatów została porzucona.
azure-spring-cloud-starter-cache nie dotyczy Ten artefakt został usunięty w celu używania usługi Redis, po prostu dodaj spring-boot-starter-data-redis, spring-boot-starter-cache, spring-cloud-azure-resourcemanageri spring-cloud-azure-starter. Aby uzyskać więcej informacji na temat użycia, zobacz Spring Cloud Azure Redis support.
azure-spring-cloud-starter-eventhubs-kafka nie dotyczy Ten artefakt został usunięty na potrzeby korzystania z platformy Kafka, po prostu dodaj spring kafka, spring-cloud-azure-resourcemanageri spring-cloud-azure-starter. Aby uzyskać więcej informacji na temat użycia, zobacz Spring Cloud Azure obsługa platformy Kafka.
azure-spring-cloud-starter-eventhubs spring-cloud-azure-starter-integration-eventhubs Zmieniono nazwę artefaktu, aby dodać integration, wskazującą użycie integracji spring z usługą Event Hubs.
azure-spring-cloud-starter-servicebus spring-cloud-azure-starter-integration-servicebus Zmieniono nazwę artefaktu, aby dodać integration wskazującą użycie integracji spring z Service Bus.
azure-spring-cloud-starter-storage-queue spring-cloud-azure-starter-integration-storage-queue Zmieniono nazwę artefaktu, aby dodać integration, wskazującą użycie integracji spring z kolejką magazynu.
azure-spring-cloud-storage nie dotyczy Ten artefakt został usunięty ze wszystkimi funkcjami scalanymi z nowym artefaktem spring-cloud-azure-autoconfigure.
azure-spring-cloud-stream-binder-eventhubs spring-cloud-azure-stream-binder-eventhubs Ten artefakt został refaktoryzowany przy użyciu nowego projektu, głównie spring-cloud-azure-stream-binder-eventhubs i spring-cloud-azure-stream-binder-eventhubs-core.
azure-spring-cloud-stream-binder-service-core spring-cloud-azure-stream-binder-servicebus-core Zmieniono nazwę artefaktu.
azure-spring-cloud-stream-binder-servicebus-queue spring-cloud-azure-stream-binder-servicebus Ten artefakt został usunięty ze wszystkimi funkcjami, które można scalić z artefaktem spring-cloud-azure-stream-binder-servicebus.
azure-spring-cloud-stream-binder-servicebus-topic spring-cloud-azure-stream-binder-servicebus Ten artefakt został usunięty ze wszystkimi funkcjami, które można scalić z artefaktem spring-cloud-azure-stream-binder-servicebus.
azure-spring-integration-core spring-integration-azure-core Zmieniono nazwę artefaktu.
azure-spring-integration-eventhubs spring-integration-azure-eventhubs Zmień nazwę artefaktu.
azure-spring-integration-servicebus spring-integration-azure-servicebus Zmień nazwę artefaktu.
azure-spring-integration-storage-queue spring-integration-azure-storage-queue Zmień nazwę artefaktu.
nie dotyczy spring-cloud-azure-actuator Nowo dodany artefakt siłownika Spring Cloud Azure.
nie dotyczy spring-cloud-azure-actuator-autoconfigure Nowo dodany artefakt autokonfiguracji siłownika Spring Cloud Azure, w tym autokonfiguracja siłownika.
nie dotyczy spring-cloud-azure-autoconfigure Nowo dodany artefakt rozwiązania Spring Cloud Azure AutoConfigure, w tym wszystkie automatyczne konfiguracje dla klientów zestawu SDK, obsługa zabezpieczeń spring, obsługa platformy Spring Data i obsługa integracji spring.
nie dotyczy spring-cloud-azure-core Nowo dodany artefakt Spring Cloud Azure Core, w tym wszystkie podstawowe funkcje.
nie dotyczy spring-cloud-azure-resourcemanager Nowo dodany artefakt Resource Manager. Jest to biblioteka Podstawowa używająca Azure Resource Manager do odczytywania metadanych i tworzenia zasobów.
nie dotyczy spring-cloud-azure-service Nowo dodany artefakt usługi Spring Cloud Azure Service, w tym abstrakcje dla usług Azure.
nie dotyczy spring-cloud-azure-starter-appconfiguration Nowo dodany starter do korzystania z klienta zestawu SDK Azure App Configuration.
nie dotyczy spring-cloud-azure-starter-cosmos Nowo dodany starter do korzystania z klienta zestawu SDK Azure Cosmos DB.
nie dotyczy spring-cloud-azure-starter-eventhubs Nowo dodany starter do korzystania z klienta zestawu SDK Azure Event Hubs.
nie dotyczy spring-cloud-azure-starter-servicebus Nowo dodany starter do korzystania z klienta zestawu SDK Azure Service Bus.
nie dotyczy spring-cloud-azure-starter-storage-blob Nowo dodany szablon startowy do używania klienta zestawu SDK obiektów blob Azure Storage.
nie dotyczy spring-cloud-azure-starter-storage-file-share Nowo dodany starter do korzystania z klienta zestawu SDK udziału plików Azure Storage.
nie dotyczy spring-cloud-azure-starter-storage-queue Nowo dodany starter do korzystania z klienta zestawu SDK kolejki Azure Storage.
nie dotyczy spring-cloud-azure-starter-stream-eventhubs Nowo dodany starter do używania narzędzia Azure Event Hubs Spring Cloud Stream Binder.
nie dotyczy spring-cloud-azure-starter-stream-servicebus Nowo dodany starter do używania narzędzia Azure Service Bus binder strumienia Spring Cloud
nie dotyczy spring-cloud-azure-stream-binder-eventhubs-core Nowo dodany artefakt podstawowy usługi Spring Cloud Stream dla Azure Event Hubs.

Zmiany zależności

Niektóre niepotrzebne zależności zostały uwzględnione w starszych artefaktach, które zostały usunięte w nowoczesnych bibliotekach Spring Cloud Azure 4.0. Pamiętaj, aby ręcznie dodać usunięte zależności do projektu, aby zapobiec awariom.

Biblioteki, które mają zmiany zależności, obejmują:

Zmiany uwierzytelniania

Platforma Spring Cloud Azure 4.0 obsługuje wszystkie metody uwierzytelniania obsługiwane przez każdy zestaw SDK usługi Azure. Umożliwia skonfigurowanie poświadczeń tokenu globalnego, a także podanie poświadczeń tokenu na każdym poziomie usługi. Jednak poświadczenie nie jest wymagane do skonfigurowania usługi Spring Cloud Azure 4.0, ponieważ może stosować poświadczenia przechowywane w lokalnym środowisku deweloperów lub tożsamości zarządzanej w usługach Azure. Upewnij się, że podmiot zabezpieczeń otrzymał wystarczające uprawnienia dostępu do zasobów docelowych Azure.

Nuta

W przypadku przypisywania ról do podmiotów zabezpieczeń w celu interakcji z usługami obsługi komunikatów Azure role powiązane z Data są wymagane do przeprowadzania operacji obsługi komunikatów. W przypadku bibliotek Azure Spring Apps Stream Event Hubs/Service Bus Binder Contributor rola jest wymagana, gdy jest wymagana funkcja automatycznego tworzenia zasobów. Aby uzyskać więcej informacji, zobacz Azure wbudowane role.

Poświadczenie łańcuchowe, fasola DefaultAzureCredential jest domyślnie konfigurowana automatycznie i będzie używana przez wszystkie składniki, jeśli nie określono więcej informacji o uwierzytelnianiu. Aby uzyskać więcej informacji, zobacz sekcję DefaultAzureCredential w Azure Identity client library for Java.

Właściwości konfiguracji

Migracja właściwości

Utworzyliśmy plik w additional-spring-configuration-metadata.json celu złagodzenia migracji właściwości podczas korzystania z spring-boot-properties-migratorprogramu . Najpierw dodaj następującą właściwość migracji do aplikacji:

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

Lub, jeśli używasz narzędzia Gradle:

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

Jeśli uruchomisz aplikację, zidentyfikuje właściwości, które nie są już zarządzane przez usługę Spring Cloud Azure. Jeśli istnieje zamiana, tymczasowo ponownie zamapuje właściwość za pomocą ostrzeżenia. Jeśli nie ma zamiany, raport o błędach zawiera więcej informacji. Tak czy inaczej, konfiguracja musi zostać zaktualizowana i zależność usunięta po zaktualizowaniu konfiguracji.

Zanim przejdziesz dalej, warto użyć funkcji wyszukiwania środowiska IDE, aby sprawdzić, czy nie używasz jednej z właściwości, które zostały zmigrowane w teście integracji.

Nuta

W tej zmianie zmieniliśmy wiele właściwości konfiguracji. Korzystanie z spring-boot-properties-migrator ułatwi migrację.

Konfiguracje globalne

Nowoczesny spring-cloud-azure-starter umożliwia zdefiniowanie właściwości, które mają zastosowanie do wszystkich Azure SDKs w przestrzeni nazw spring.cloud.azure. Ta funkcja nie była obsługiwana w starszych azure-spring-boot-starter. Konfiguracje globalne można podzielić na pięć kategorii pokazanych w poniższej tabeli:

Przedrostek Opis
spring.cloud.azure.client Konfiguruje klientów transportu pod każdym Azure SDK.
spring.cloud.azure.credential Konfiguruje sposób uwierzytelniania przy użyciu Microsoft Entra ID.
spring.cloud.azure.profile Konfiguruje środowisko chmury Azure.
spring.cloud.azure.proxy Konfiguruje opcje serwera proxy, które mają zastosowanie do wszystkich klientów Azure SDK.
spring.cloud.azure.retry Konfiguruje opcje ponawiania, mają zastosowanie do wszystkich klientów Azure SDK. Opcje ponawiania prób mają obsługiwaną część zestawów SDK, nie ma spring.cloud.azure.cosmos.retry.

Aby uzyskać pełną listę konfiguracji, zobacz Spring Cloud Azure właściwości konfiguracji.

Konfigurowanie każdego zestawu SDK

Aby uzyskać szczegółowe informacje o opcjach konfiguracji na poziomie zestawu SDK, skorzystaj z następujących linków:

Zmiany powodujące niezgodność interfejsu API

Aby uzyskać szczegółowe informacje na temat zmian powodujących niezgodność interfejsu API w każdej bibliotece, skorzystaj z następujących linków:

Zmiany w bibliotece

Zmiany powodujące niezgodność w każdej bibliotece są wprowadzane w następujący sposób.

Z azure-spring-boot-starter do spring-cloud-azure-starter

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter wersji 3 programu azure-spring-boot-starter.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany zależności

Niektóre niepotrzebne zależności zostały uwzględnione w starszych artefaktach, które zostały usunięte w nowoczesnych bibliotekach Spring Cloud Azure 4.0. Pamiętaj, aby ręcznie dodać usunięte zależności do projektu, aby zapobiec przypadkowej awarii.

W poniższej tabeli przedstawiono usunięte zależności:

Usunięte zależności Opis
org.springframework.boot:spring-boot-starter-validation Dołącz starter weryfikacji, jeśli chcesz użyć modułu sprawdzania poprawności hibernacji.

Z azure-spring-boot-starter-active-directory do spring-cloud-azure-starter-active-directory

Ten przewodnik ma na celu pomoc w migracji z spring-cloud-azure-starter-active-directory wersji 3 programu azure-spring-boot-starter-active-directory.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany zależności

Niektóre niepotrzebne zależności w starszej wersji artefaktu zostały usunięte od czasu nowoczesnej biblioteki Spring Cloud Azure 4.0. Dodaj te usunięte zależności do projektu, aby zapobiec przypadkowemu awarii.

W poniższej tabeli przedstawiono usunięte zależności:

Usunięte zależności Opis
com.fasterxml.jackson.core:jackson-databind W razie potrzeby dodaj tę zależność do projektu.
io.projectreactor.netty:reactor-netty W razie potrzeby dodaj tę zależność do projektu.
org.springframework.boot:spring-boot-starter-validation W razie potrzeby dodaj tę zależność do projektu.
org.springframework.boot:spring-boot-starter-webflux W razie potrzeby dodaj tę zależność do projektu.

Zmiany konfiguracji zestawu SDK

Ta sekcja zawiera zmiany dotyczące dodanych, usuniętych i zmienionych właściwości.

  • Poniżej przedstawiono dwa główne kwestie, które należy zwrócić uwagę na:
  1. Prefiks wszystkich nazw właściwości konfiguracji został zmieniony z azure.activedirectory na spring.cloud.azure.active-directory.
  2. Dodano nową właściwość spring.cloud.azure.active-directory.enabled w celu włączenia/wyłączenia Microsoft Entra powiązanych funkcji. Domyślna wartość to false.

W poniższej tabeli przedstawiono mapowania właściwości między azure-spring-boot-starter-active-directory a spring-cloud-azure-starter-active-directory:

Starsze właściwości Nowoczesne właściwości
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 Aby uzyskać więcej informacji, zapoznaj się z poniższą tabelą.
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
  • Typ wartości następujących właściwości jest zmieniany z long na Duration:

    • jwt-connect-timeout
    • jwt-read-timeout
    • jwk-set-cache-lifespan
    • jwk-set-cache-refresh-time.
  • Następujące właściwości są usuwane:

    • azure.activedirectory.allow-telemetry
    • azure.activedirectory.user-group.enable-full-list
    • azure.activedirectory.graph-base-uri
    • azure.activedirectory.graph-membership-uri
  • Dodawane są następujące właściwości:

    • 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

Nuta

Funkcja azure.activedirectory.graph-membership-uri została zastąpiona przez 2 właściwości: spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint i spring.cloud.azure.active-directory.user-group.use-transitive-members. Pierwsza właściwość służy do określania nazwy hosta, a druga flaga użycia ścieżki adresu URL: v1.0/me/memberOf lub v1.0/me/transitiveMemberOf.

Oto kilka przykładów migracji:

  • Przykład 1. Przypadek 1

    • W przypadku starszej wersji: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/memberOf

    • Dla nowoczesnych: 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

  • Przykład 2. Przypadek 2

    • W przypadku starszej wersji: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/transitiveMemberOf

    • Dla nowoczesnych: 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

Zmiany interfejsu API

W poniższej tabeli przedstawiono mapowania klas z azure-spring-boot-starter-active-directory na spring-cloud-azure-starter-active-directory:

Starsza klasa Nowoczesna klasa
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

W tej sekcji wymieniono usunięte klasy z azure-spring-boot-starter-active-directoryklasy .

  • Usunięto starszą klasę

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

Z azure-spring-boot-starter-active-directory-b2c do spring-cloud-azure-starter-active-directory-b2c

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-active-directory-b2c wersji 3 programu azure-spring-boot-starter-active-directory-b2c.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany zależności

Niektóre niepotrzebne zależności zostały uwzględnione w starszych artefaktach, które zostały usunięte w nowoczesnych bibliotekach Spring Cloud Azure 4.0. Pamiętaj, aby ręcznie dodać usunięte zależności do projektu, aby zapobiec przypadkowej awarii.

W poniższej tabeli przedstawiono usunięte zależności:

Usunięte zależności Opis
org.springframework.boot:spring-boot-starter-validation Dołącz starter weryfikacji, jeśli chcesz użyć modułu sprawdzania poprawności hibernacji.

Zmiany konfiguracji zestawu SDK

Ta sekcja zawiera zmiany dotyczące dodanych, usuniętych i zmienionych właściwości.

  • Poniżej przedstawiono dwa główne kwestie, które należy zwrócić uwagę na:
  1. Wszystkie nazwy właściwości konfiguracji zmieniły prefiks z azure.activedirectory.b2c na spring.cloud.azure.active-directory.b2c.
  2. Dodano nową właściwość spring.cloud.azure.active-directory.b2c.enabled w celu zezwalania na włączanie/wyłączanie funkcji powiązanych z usługą AD B2C Azure. Wartość domyślna to false.

W poniższej tabeli przedstawiono mapowania właściwości z azure-spring-boot-starter-active-directory-b2c na spring-cloud-azure-starter-active-directory-b2c:

Starsze właściwości Nowoczesne właściwości
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
  • Usunięto właściwości z :azure-spring-boot-starter-active-directory-b2c

    • azure.activedirectory.b2c.allow-telemetry
    • azure.activedirectory.b2c.tenant
  • Typ wartości następujących właściwości jest zmieniany z long na Duration:

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

Zmiany interfejsu API

W poniższej tabeli przedstawiono mapowania klas z azure-spring-boot-starter-active-directory-b2c na spring-cloud-azure-starter-active-directory-b2c:

Starsza klasa Nowoczesna klasa
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

Z azure-spring-boot-starter-cosmos do spring-cloud-azure-starter-data-cosmos

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-data-cosmos wersji 3 programu azure-spring-boot-starter-cosmos.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany konfiguracji zestawu SDK

Wszystkie nazwy właściwości konfiguracji zmieniły prefiks z azure.cosmos na spring.cloud.azure.cosmos.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-boot-starter-cosmos na spring-cloud-azure-starter-data-cosmos:

Starsze właściwości Nowoczesne właściwości
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

Z azure-spring-boot-starter-keyvault-secrets do spring-cloud-azure-starter-keyvault-secrets

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-keyvault-secrets wersji 3 programu azure-spring-boot-starter-keyvault-secrets.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany konfiguracji zestawu SDK

Ta sekcja zawiera zmiany dotyczące dodanych, usuniętych i zmienionych właściwości.

W poniższej tabeli przedstawiono mapowania właściwości z azure-spring-boot-starter-keyvault-secrets na spring-cloud-azure-starter-keyvault-secrets:

Starsze właściwości Nowoczesne właściwości
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 i spring.cloud.azure.keyvault.secret.property-source-enabled
azure.keyvault.order Nieobsługiwane. Zamiast tego użyj kolejności property-source[n] .
azure.keyvault.refresh-interval spring.cloud.azure.keyvault.secret.property-source[n].refresh-interval
azure.keyvault.secret-keys spring.cloud.azure.keyvault.secret.property-source[n].secret-keys
azure.keyvault.tenant-id spring.cloud.azure.keyvault.secret.property-source[n].profile.tenant-id
azure.keyvault.uri spring.cloud.azure.keyvault.secret.property-source[n].endpoint
  • Usunięto właściwości z :spring-cloud-azure-starter-keyvault-secrets

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

Należy zwrócić uwagę na następujące kwestie:

  1. Wszystkie nazwy właściwości konfiguracji zmieniły prefiks z azure.keyvault na spring.cloud.azure.keyvault.secret.
  2. spring.cloud.azure.keyvault.secret.enabled służy do włączania wszystkich funkcji wpisu tajnego Key Vault, dołączania Key Vault tajnych fasoli klienta (takich jak SecretClient i SecretAsyncClient) i dodaj KeyVaultPropertySource w ConfigurableEnvironment.
  3. spring.cloud.azure.keyvault.secret.property-source-enabled służy do włączania wszystkich KeyVaultPropertySource. Zacznie obowiązywać tylko wtedy, gdy spring.cloud.azure.keyvault.secret.enabled=true.
  4. W przypadku Azure typowych właściwości (takich jak client, proxy, retry, credential, profile) i właściwości Key Vault (takich jak endpoint, service-version). Jeśli spring.cloud.azure.keyvault.secret.property-sources[n].PROPERTY_NAME nie jest skonfigurowana, spring.cloud.azure.keyvault.secret.PROPERTY_NAME zostanie użyta.
  5. spring.cloud.azure.keyvault.secret.property-sources[n].resource jest specyficzny dla unikatowego zasobu Azure, więc jeśli nie jest skonfigurowany, nie otrzyma wartości z innych miejsc.

Z azure-spring-boot-starter-servicebus-jms do spring-cloud-azure-starter-servicebus-jms

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-servicebus-jms wersji 3 programu azure-spring-boot-starter-servicebus-jms.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany konfiguracji zestawu SDK

Typ konfiguracji zmieniony spring.jms.servicebus.idle-timeout z long (milisekund) na Duration wzorzec umożliwiający czytelność.

Z azure-spring-boot-starter-storage do spring-cloud-azure-starter-storage-blob

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-storage-blob wersji 3 programu azure-spring-boot-starter-storage.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany konfiguracji zestawu SDK

Wszystkie nazwy właściwości konfiguracji zmieniły prefiks z azure.storage na spring.cloud.azure.storage.blob.

W poniższej tabeli przedstawiono mapowania właściwości z azure-spring-boot-starter-storage na spring-cloud-azure-starter-storage-blob:

Starsze właściwości Nowoczesne właściwości
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

Zmiany interfejsu API

W poniższej tabeli przedstawiono mapowania klas z azure-spring-boot-starter-storage na spring-cloud-azure-starter-storage-blob:

Starsza klasa Nowoczesna klasa
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

Z azure-spring-boot-starter-storage do spring-cloud-azure-starter-storage-file-share

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-storage-file-share wersji 3 programu azure-spring-boot-starter-storage.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany konfiguracji zestawu SDK

Wszystkie nazwy właściwości konfiguracji zmieniły prefiks z azure.storage na spring.cloud.azure.storage.fileshare.

W poniższej tabeli przedstawiono mapowania właściwości z azure-spring-boot-starter-storage na spring-cloud-azure-starter-storage-file-share:

Starsze właściwości Nowoczesne właściwości
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

Zmiany interfejsu API

W poniższej tabeli przedstawiono mapowania klas z azure-spring-boot-starter-storage na spring-cloud-azure-starter-storage-file-share:

Starsza klasa Nowoczesna klasa
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

Z azure-spring-cloud-starter-eventhubs do spring-cloud-azure-starter-integration-eventhubs

Ten przewodnik ma na celu pomoc w migracji z spring-cloud-azure-starter-integration-eventhubs wersji 2 programu azure-spring-cloud-starter-eventhubs.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany konfiguracji zestawu SDK

Ważny

Prefiks konfiguracji został zmieniony z spring.cloud.azure.eventhub na spring.cloud.azure.eventhubs.

Aby uzyskać zmiany w wpisów podrzędnych dla tego prefiksu, zobacz następujące tabele:

W poniższej tabeli przedstawiono mapowania właściwości z azure-spring-cloud-starter-eventhubs na spring-cloud-azure-starter-integration-eventhubs:

Starsze właściwości Nowoczesne właściwości
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

Na przykład zmień wartość z:

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}

do:

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}

Nuta

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania opisany w tej procedurze, taki jak bazy danych, pamięci podręczne, komunikaty lub usługi sztucznej inteligencji, wymaga bardzo wysokiego stopnia zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Użyj tego przepływu tylko wtedy, gdy bardziej bezpieczne opcje, takie jak tożsamości zarządzane dla połączeń bez hasła lub bez kluczy, nie są opłacalne. W przypadku operacji maszyny lokalnej preferuj tożsamości użytkowników dla połączeń bez hasła lub bez klucza.

Zmiany interfejsu API

  • Aby uzyskać informacje o zmianach w adnotacjach odbiornika, zobacz przewodnik migracji biblioteki <<migration-azure-spring-cloud-messaging, azure-spring-cloud-messaging>>.
  • Upuść EventHubOperation z funkcją subskrybowania przeniesioną do klasy EventHubsMessageListenerContainer, a funkcja wysyłająca została przeniesiona do EventHubsTemplate.
  • Zmień nazwę EventHubInboundChannelAdapter na EventHubsInboundChannelAdapter, aby zachować spójność z usługą Azure Event Hubs.
  • Zmień konstruktor z EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String) na EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) i EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Zmień styl tworzenia wystąpienia CheckpointConfig na prosty konstruktor zamiast stylu kompilacji.
  • Usuwanie EventHubOperation#setCheckpointConfiginterfejsu API. Aby ustawić konfigurację punktu kontrolnego dla karty kanału przychodzącego, użytkownicy mogą wywołać metodę EventHubsContainerProperties#setCheckpointConfig.
  • Usuwanie EventHubOperation#setBatchConsumerConfiginterfejsu API. Aby ustawić konfigurację zużywaną wsadowo dla karty kanału przychodzącego, użytkownicy mogą w międzyczasie wywoływać dwie metody EventHubsContainerProperties#getBatch#setMaxSize i EventHubsContainerProperties#getBatch#setMaxWaitTime.
  • W przypadku trybu przetwarzania wsadowego zmień nazwy nagłówków komunikatów przekonwertowane z komunikatów wsadowych.
    • Zmień nagłówek wiadomości z azure_eventhub_enqueued_time na azure_eventhubs_batch_converted_enqueued_time.
    • Zmień nagłówek wiadomości z azure_eventhub_offset na azure_eventhubs_batch_converted_offset.
    • Zmień nagłówek wiadomości z azure_eventhub_sequence_number na azure_eventhubs_batch_converted_sequence_number.
    • Zmień nagłówek wiadomości z azure_partition_key na azure_batch_converted_partition_key.
  • Podczas publikowania komunikatów w usłudze Event Hubs zignoruj wszystkie nagłówki komunikatów przekonwertowane z komunikatów wsadowych. Nagłówki obejmują:
    • 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
  • Tryb punktu kontrolnego BATCH działa teraz tylko w trybie przetwarzania wsadowego, który można włączyć, przekazując ListenerMode.BATCH do konstruktora EventHubsInboundChannelAdapter.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-cloud-starter-eventhubs na spring-cloud-azure-starter-integration-eventhubs:

Starsza klasa Nowoczesna klasa
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

Przykładowy fragment kodu

  • EventHubsInboundChannelAdapter przykładowy kod:

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

    Nowoczesny 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 przykładowy kod:

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

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

Z azure-spring-integration-eventhubs do spring-integration-azure-eventhubs

Ten przewodnik ma na celu pomoc w migracji z spring-integration-azure-eventhubs wersji 2 programu azure-spring-integration-eventhubs.

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.

Zmiany interfejsu API

  • Upuść EventHubOperation z funkcją subskrybowania przeniesioną do klasy EventHubsMessageListenerContainer, a funkcja wysyłająca została przeniesiona do EventHubsTemplate.
  • Zmień nazwę EventHubInboundChannelAdapter na EventHubsInboundChannelAdapter, aby zachować spójność z usługą Azure Event Hubs.
  • Zmień konstruktor z EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String) na EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) i EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Zmień styl tworzenia wystąpienia CheckpointConfig na prosty konstruktor zamiast stylu kompilacji.
  • Usuwanie EventHubOperation#setCheckpointConfiginterfejsu API. Aby ustawić konfigurację punktu kontrolnego dla karty kanału przychodzącego, użytkownicy mogą wywołać metodę EventHubsContainerProperties#setCheckpointConfig.
  • Usuwanie EventHubOperation#setBatchConsumerConfiginterfejsu API. Aby ustawić konfigurację zużywaną wsadowo dla karty kanału przychodzącego, użytkownicy mogą w międzyczasie wywoływać dwie metody EventHubsContainerProperties#getBatch#setMaxSize i EventHubsContainerProperties#getBatch#setMaxWaitTime.
  • W przypadku trybu przetwarzania wsadowego zmień nazwy nagłówków komunikatów przekonwertowane z komunikatów wsadowych.
    • Zmień nagłówek wiadomości z azure_eventhub_enqueued_time na azure_eventhubs_batch_converted_enqueued_time.
    • Zmień nagłówek wiadomości z azure_eventhub_offset na azure_eventhubs_batch_converted_offset.
    • Zmień nagłówek wiadomości z azure_eventhub_sequence_number na azure_eventhubs_batch_converted_sequence_number.
    • Zmień nagłówek wiadomości z azure_partition_key na azure_batch_converted_partition_key.
  • Podczas publikowania komunikatów w usłudze Event Hubs zignoruj wszystkie nagłówki komunikatów przekonwertowane z komunikatów wsadowych. Nagłówki obejmują:
    • 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
  • Tryb punktu kontrolnego BATCH działa teraz tylko w trybie przetwarzania wsadowego, który można włączyć, przekazując ListenerMode.BATCH do konstruktora EventHubsInboundChannelAdapter.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-integration-eventhubs na spring-integration-azure-eventhubs:

Starsza klasa Nowoczesna klasa
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

Z azure-spring-cloud-starter-servicebus do spring-cloud-azure-starter-integration-servicebus

Ten przewodnik ma na celu pomoc w migracji z spring-cloud-azure-starter-integration-servicebus wersji 2 programu azure-spring-cloud-starter-servicebus.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany konfiguracji zestawu SDK

W przypadku wszystkich opcji konfiguracji obsługiwanych w spring-cloud-azure-starter-integration-servicebusprefiks pozostaje spring.cloud.azure.servicebus.

W poniższej tabeli przedstawiono mapowania właściwości z azure-spring-cloud-starter-servicebus na spring-cloud-azure-starter-integration-servicebus:

Starsze właściwości Nowoczesne właściwości
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-retrieslub , należy skonfigurować w zależności od spring.cloud.azure.servicebus.retry.mode = fixed lub spring.cloud.azure.servicebus.retry.fixed.max-retriesexponential
spring.cloud.azure.servicebus.retry-options.delay spring.cloud.azure.servicebus.retry.exponential.base-delaylub , należy skonfigurować w zależności od spring.cloud.azure.servicebus.retry.mode = fixed lub spring.cloud.azure.servicebus.retry.fixed.delayexponential
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

Zmiany interfejsu API

  • Upuść ServiceBusQueueOperation i ServiceBusTopicOperation z funkcją subskrybowania przeniesioną do klasy ServiceBusMessageListenerContainer, a funkcja wysyłająca została przeniesiona do ServiceBusTemplate.
  • Upuść ServiceBusQueueInboundChannelAdapter i ServiceBusTopicInboundChannelAdapter i przenieś funkcje, aby nasłuchiwać jednostki kolejki/tematu Service Bus do usługi ServiceBusInboundChannelAdapter.
  • Zmień konstruktor z ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String) na ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) i ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Zmień konstruktor z ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String) na ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) i ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Upuść interfejsy API ServiceBusQueueOperation#setCheckpointConfig i ServiceBusTopicOperation#setCheckpointConfig. Aby ustawić konfigurację punktu kontrolnego dla karty kanału przychodzącego, użytkownicy mogą wywołać metodę ServiceBusContainerProperties#setAutoComplete. Aby wyłączyć tryb automatycznego uzupełniania jest odpowiednikiem trybu MANUAL punktu kontrolnego i włączenia go spowoduje wyzwolenie trybu RECORD.
  • Upuść interfejsy API ServiceBusQueueOperatio#setClientConfig i ServiceBusTopicOperation#setClientConfig. Aby skonfigurować podstawową ServiceBusProcessorClient używaną przez adapter kanału przychodzącego, użytkownicy mogą zamiast tego używać ServiceBusContainerProperties.
  • Porzucanie obsługi CompletableFuture w usługach ServiceBusTemplate i DefaultMessageHandlerobsługuje Reactor.
  • Dodaj nowy interfejs API ServiceBusTemplate#setDefaultEntityType, aby określić typ jednostki, który jest wymagany, gdy dla PropertiesSupplier&lt;String, ProducerProperties&gt;nie podano fasoli ProducerProperties#entityType .
  • Upuść nagłówek wiadomości AzureHeaders.RAW_ID. Użyj ServiceBusMessageHeaders.MESSAGE_ID zamiast tego.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-cloud-starter-servicebus na spring-cloud-azure-starter-integration-servicebus:

Starsza klasa Nowoczesna klasa
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

Przykładowy fragment kodu

  • ServiceBusInboundChannelAdapter przykładowy kod:

    Starszy kod używania ServiceBusQueueInboundChannelAdapter lub 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;
        }
    
    }
    

    Nowoczesny 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 przykładowy kod:

    Starszy kod, przyjmując kolejkę jako przykład:

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

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

Z azure-spring-integration-servicebus do spring-integration-azure-servicebus

Ten przewodnik ma na celu pomoc w migracji z spring-integration-azure-servicebus wersji 2 programu azure-spring-integration-servicebus.

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.

Zmiany interfejsu API

  • Upuść ServiceBusQueueOperation i ServiceBusTopicOperation z funkcją subskrybowania przeniesioną do klasy ServiceBusMessageListenerContainer, a funkcja wysyłająca została przeniesiona do ServiceBusTemplate.
  • Upuść ServiceBusQueueInboundChannelAdapter i ServiceBusTopicInboundChannelAdapter i przenieś funkcje, aby nasłuchiwać jednostki kolejki/tematu Service Bus do usługi ServiceBusInboundChannelAdapter.
  • Zmień konstruktor z ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String) na ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) i ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Zmień konstruktor z ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String) na ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) i ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Upuść interfejsy API ServiceBusQueueOperation#setCheckpointConfig i ServiceBusTopicOperation#setCheckpointConfig. Aby ustawić konfigurację punktu kontrolnego dla karty kanału przychodzącego, użytkownicy mogą wywołać metodę ServiceBusContainerProperties#setAutoComplete. Aby wyłączyć tryb automatycznego uzupełniania jest odpowiednikiem trybu MANUAL punktu kontrolnego i włączenia go spowoduje wyzwolenie trybu RECORD.
  • Upuść interfejsy API ServiceBusQueueOperation#setClientConfig i ServiceBusTopicOperation#setClientConfig. Aby skonfigurować podstawową ServiceBusProcessorClient używaną przez adapter kanału przychodzącego, użytkownicy mogą zamiast tego używać ServiceBusContainerProperties.
  • Porzucanie obsługi CompletableFuture w usługach ServiceBusTemplate i DefaultMessageHandlerobsługuje Reactor.
  • Dodaj nowy interfejs API ServiceBusTemplate#setDefaultEntityType, aby określić typ jednostki, który jest wymagany, gdy dla PropertiesSupplier&lt;String, ProducerProperties&gt;nie podano fasoli ProducerProperties#entityType .
  • Upuść nagłówek wiadomości AzureHeaders.RAW_ID. Użyj ServiceBusMessageHeaders.MESSAGE_ID zamiast tego.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-integration-servicebus na spring-integration-azure-servicebus:

Starsza klasa Nowoczesna klasa
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

Z azure-spring-cloud-starter-storage-queue do spring-cloud-azure-starter-integration-storage-queue

Ten przewodnik ma na celu pomoc w migracji z spring-cloud-azure-starter-integration-storage-queue wersji 2 programu azure-spring-cloud-starter-storage-queue.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany konfiguracji zestawu SDK

Wszystkie nazwy właściwości konfiguracji zmieniły prefiks z spring.cloud.azure.storage na spring.cloud.azure.storage.queue.

W poniższej tabeli przedstawiono mapowania właściwości z azure-spring-cloud-starter-storage-queue na spring-cloud-azure-starter-integration-storage-queue:

Starsze właściwości Nowoczesne właściwości
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

Zmiany interfejsu API

  • Upuść StorageQueueOperation i podaj StorageQueueTemplate.
  • Porzucanie konfiguracji checkpoint-mode w programie StorageQueueTemplateobsługuje tylko tryb MANUAL.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-cloud-starter-storage-queue na spring-cloud-azure-starter-integration-storage-queue.

Starsza klasa Nowoczesna klasa
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

Z azure-spring-integration-storage-queue do spring-integration-azure-storage-queue

Ten przewodnik ma na celu pomoc w migracji z spring-integration-azure-storage-queue wersji 2 programu azure-spring-integration-storage-queue.

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.

Zmiany interfejsu API

  • Upuść StorageQueueOperation i podaj StorageQueueTemplate.
  • Porzucanie konfiguracji checkpoint-mode w programie StorageQueueTemplateobsługuje tylko tryb MANUAL.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-integration-storage-queue na spring-integration-azure-storage-queue.

Starsza klasa Nowoczesna klasa
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

Z azure-spring-cloud-stream-binder-eventhubs do spring-cloud-azure-stream-binder-eventhubs

Ten przewodnik ma na celu pomoc w migracji z spring-cloud-azure-stream-binder-eventhubs wersji 2 programu azure-spring-cloud-stream-binder-eventhubs.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany konfiguracji zestawu SDK

Ważny

Prefiks konfiguracji został zmieniony z spring.cloud.azure.eventhub na spring.cloud.azure.eventhubs.

Ważny

Nazwa typu binder jest zmieniana z: eventhub na eventhubs.

Aby uzyskać zmiany w wpisów podrzędnych dla następującego prefiksu, zobacz poniższą tabelę.

W poniższej tabeli przedstawiono mapowania właściwości z azure-spring-cloud-stream-binder-eventhubs na spring-cloud-azure-stream-binder-eventhubs:

Starsze właściwości Nowoczesne właściwości
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

Nuta

Typ wartości konfiguracji start-position jest również zmieniany z wyliczenia com.azure.spring.integration.core.api.StartPosition na mapStartPositionProperties dla każdej partycji. W związku z tym klucz jest identyfikatorem partycji, a wartość jest com.azure.spring.cloud.service.eventhubs.properties.StartPositionProperties, która zawiera właściwości przesunięcia, numeru sekwencji, w kolejce daty i tego, czy włącznie.

Przykłady migracji konfiguracji

Aby użyć connection string do uwierzytelniania i zmigrować wymienione powyżej właściwości, zmiany konfiguracji są wymienione poniżej:

Starsza konfiguracja:

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

Nowoczesna konfiguracja:

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

Nuta

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania opisany w tej procedurze, taki jak bazy danych, pamięci podręczne, komunikaty lub usługi sztucznej inteligencji, wymaga bardzo wysokiego stopnia zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Użyj tego przepływu tylko wtedy, gdy bardziej bezpieczne opcje, takie jak tożsamości zarządzane dla połączeń bez hasła lub bez kluczy, nie są opłacalne. W przypadku operacji maszyny lokalnej preferuj tożsamości użytkowników dla połączeń bez hasła lub bez klucza.

Jeśli używasz podmiotów zabezpieczeń zamiast parametrów połączenia, w wersjach wcześniejszych niż 4.0 aplikacja najpierw połączy się z Azure Resource Manager (ARM) z podanym podmiotem zabezpieczeń, a następnie pobierze connection string określonej przestrzeni nazw z usługą ARM. Na końcu aplikacja używa pobranego connection string, aby nawiązać połączenie z Azure Event Hubs. W ten sposób należy udzielić podanego podmiotu zabezpieczeń z Contributor do pobrania skojarzonej przestrzeni nazw Azure Event Hubs.

W przypadku Azure Spring Apps 4.0 udostępniamy dwa sposoby wykorzystania podmiotów zabezpieczeń do uwierzytelniania. Nadal używa się podmiotów zabezpieczeń do nawiązywania połączenia z usługą ARM i pobierania parametrów połączenia, w których rola Contributor jest wymagana dla podmiotów zabezpieczeń. Inne wykorzystują podmioty zabezpieczeń do uwierzytelniania w Microsoft Entra ID, a następnie łączą się bezpośrednio z Azure Event Hubs. W takim przypadku rola Contributor nie jest już konieczna, podczas gdy inne Data powiązane role są wymagane w przypadku operacji obsługi komunikatów. Aby upewnić się, że podmiot zabezpieczeń otrzymał wystarczające uprawnienia dostępu do zasobu Azure, zobacz Authorize access with Microsoft Entra ID (Dostęp Microsoft Entra ID

W przypadku uwierzytelniania opartego na usłudze ARM na przykład migracja konfiguracji jest wymieniona poniżej, w której przypisana rola nie powinna ulec zmianie:

Starsza konfiguracja:

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}

Nuta

Dozwolone wartości dla tenant-id to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użyto nieprawidłowego punktu końcowego (kont osobistych i organizacyjnych) w Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertuj aplikację z jedną dzierżawą na wielodostępną w Microsoft Entra ID.

Wymagana jest nowoczesna konfiguracja, właściwości identyfikatora subskrypcji Azure i grupy zasobów:

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}

Nuta

Dozwolone wartości dla tenant-id to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użyto nieprawidłowego punktu końcowego (kont osobistych i organizacyjnych) w Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertuj aplikację z jedną dzierżawą na wielodostępną w Microsoft Entra ID.

Możesz również przeprowadzić migrację do uwierzytelniania i autoryzacji za pomocą Microsoft Entra ID bezpośrednio bez wprowadzania objazdu do usługi ARM. Upewnij się, że podmiot zabezpieczeń musi mieć niezbędne role Data dla operacji obsługi komunikatów. Poniżej przedstawiono przykłady konfiguracji jednostki usługi i tożsamości zarządzanej:

  • Z jednostką usługi

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

Nuta

Dozwolone wartości dla tenant-id to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użyto nieprawidłowego punktu końcowego (kont osobistych i organizacyjnych) w Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertuj aplikację z jedną dzierżawą na wielodostępną w Microsoft Entra ID.

  • Przy użyciu tożsamości zarządzanej

    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}
    

Zmiany interfejsu API

W poniższej tabeli przedstawiono mapowania klas z azure-spring-cloud-stream-binder-eventhubs na spring-cloud-azure-stream-binder-eventhubs.

Starsza klasa Nowoczesna klasa
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

Z azure-spring-cloud-stream-binder-servicebus-* do spring-cloud-azure-stream-binder-servicebus

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-stream-binder-servicebus wersji 2 programu azure-spring-cloud-stream-binder-servicebus-queue lub azure-spring-cloud-stream-binder-servicebus-topic.

Aby uzyskać ogólne informacje, użyj następujących linków:

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Introduction and Migration benefits (Korzyści z migracji w wersji 4.0).
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Zmiany nazewnictwa.
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek usługi Spring Cloud Azure, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication.
  • Aby dowiedzieć się, jak korzystać z podczas migracji, zobacz sekcję Configure each SDK (Konfigurowanie poszczególnych zestawów SDK).
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje.

Zmiany konfiguracji zestawu SDK

Ważny

Starsze biblioteki binder są azure-spring-cloud-stream-binder-servicebus-queue i azure-spring-cloud-stream-binder-servicebus-topic, a teraz są scalane w jeden spring-cloud-azure-stream-binder-servicebus.

Ważny

Typ powiązania jest łączony z servicebus-queue i servicebus-topic jako servicebus.

W poniższej tabeli wymieniono nowe właściwości konfiguracji spring-cloud-azure-stream-binder-servicebus:

Nowoczesne właściwości Opis
spring.cloud.stream.servicebus.bindings.binding-name.producer.entity-type Jeśli używasz funkcji wysyłania, musisz ustawić typ jednostki, którą można ustawić na temat lub kolejkę.

W poniższej tabeli przedstawiono mapowania właściwości z azure-spring-cloud-stream-binder-servicebus-* na spring-cloud-azure-stream-binder-servicebus:

Starsze właściwości Nowoczesne właściwości
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-retrieslub , należy skonfigurować w zależności od spring.cloud.azure.servicebus.retry.mode = fixed lub spring.cloud.azure.servicebus.retry.fixed.max-retriesexponential
spring.cloud.azure.servicebus.retry-options.delay spring.cloud.azure.servicebus.retry.exponential.base-delaylub , należy skonfigurować w zależności od spring.cloud.azure.servicebus.retry.mode = fixed lub spring.cloud.azure.servicebus.retry.fixed.delayexponential
spring.cloud.azure.servicebus.retry-options.max-delay spring.cloud.azure.servicebus.retry.exponential.max-delay
spring.cloud.azure.servicebus.retry-options.try-timeout spring.cloud.azure.servicebus.retry.try-timeout
spring.cloud.stream.servicebus.queue.bindings.* spring.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.concurrency spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions / max-concurrent-calls
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.checkpoint-mode spring.cloud.stream.servicebus.bindings.binding-name.consumer.auto-complete
spring.cloud.stream.servicebus.topic.bindings.* spring.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.concurrency spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions / max-concurrent-calls
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.checkpoint-mode spring.cloud.stream.servicebus.bindings.binding-name.consumer.auto-complete

Nuta

Właściwość współbieżności zostanie zastąpiona przez parametr maxConcurrentSessions, gdy sesjeEnabled jest true, a właściwość maxConcurrentCalls, gdy sessionsEnabled jest false.

Nuta

Włączenie automatycznego uzupełniania jest równe RECORD trybie punktu kontrolnego, a w przeciwnym razie tryb MANUAL.

Przykłady migracji konfiguracji

Starsza konfiguracja, używając kolejki jako przykładu:

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

Nowoczesna konfiguracja:

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

Nuta

Firma Microsoft zaleca korzystanie z najbezpieczniejszego dostępnego przepływu uwierzytelniania. Przepływ uwierzytelniania opisany w tej procedurze, taki jak bazy danych, pamięci podręczne, komunikaty lub usługi sztucznej inteligencji, wymaga bardzo wysokiego stopnia zaufania w aplikacji i niesie ze sobą ryzyko, które nie występują w innych przepływach. Użyj tego przepływu tylko wtedy, gdy bardziej bezpieczne opcje, takie jak tożsamości zarządzane dla połączeń bez hasła lub bez kluczy, nie są opłacalne. W przypadku operacji maszyny lokalnej preferuj tożsamości użytkowników dla połączeń bez hasła lub bez klucza.

Jeśli używasz podmiotów zabezpieczeń zamiast parametrów połączenia, w wersjach wcześniejszych niż 4.0 aplikacja najpierw połączy się z Azure Resource Manager (ARM) z podanym podmiotem zabezpieczeń, a następnie pobierze connection string określonej przestrzeni nazw z usługą ARM. W końcu aplikacja używa pobranego connection string do nawiązania połączenia z Azure Service Bus. W ten sposób należy przyznać podanemu podmiotowi zabezpieczeń rolę Contributor w celu pobrania skojarzonej przestrzeni nazw Azure Service Bus.

W przypadku Azure Spring Apps 4.0 udostępniamy dwa sposoby wykorzystania podmiotów zabezpieczeń do uwierzytelniania. Nadal używa się podmiotów zabezpieczeń do nawiązywania połączenia z usługą ARM i pobierania parametrów połączenia, w których rola Contributor jest wymagana dla podmiotów zabezpieczeń. Inne wykorzystują podmioty zabezpieczeń do uwierzytelniania w Microsoft Entra ID, a następnie łączą się bezpośrednio z Azure Service Bus. W takim przypadku rola Contributor nie jest już konieczna, podczas gdy inne Data powiązane role są wymagane w przypadku operacji obsługi komunikatów. Aby upewnić się, że podmiot zabezpieczeń otrzymał wystarczające uprawnienia dostępu do zasobu Azure, zobacz Authorize access with Microsoft Entra ID (Dostęp Microsoft Entra ID

W przypadku uwierzytelniania opartego na usłudze ARM na przykład migracja konfiguracji jest wymieniona poniżej, w której przypisana rola nie powinna ulec zmianie:

Starsza konfiguracja:

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}

Nuta

Dozwolone wartości dla tenant-id to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użyto nieprawidłowego punktu końcowego (kont osobistych i organizacyjnych) w Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertuj aplikację z jedną dzierżawą na wielodostępną w Microsoft Entra ID.

Wymagana jest nowoczesna konfiguracja, właściwości identyfikatora subskrypcji Azure i grupy zasobów:

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}

Nuta

Dozwolone wartości dla tenant-id to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użyto nieprawidłowego punktu końcowego (kont osobistych i organizacyjnych) w Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertuj aplikację z jedną dzierżawą na wielodostępną w Microsoft Entra ID.

Możesz również przeprowadzić migrację do uwierzytelniania i autoryzacji za pomocą Microsoft Entra ID bezpośrednio bez wprowadzania objazdu do usługi ARM. Upewnij się, że podmiot zabezpieczeń musi mieć niezbędne role Data dla operacji obsługi komunikatów. Poniżej przedstawiono przykłady konfiguracji jednostki usługi i tożsamości zarządzanej:

  • Z jednostką usługi

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

Nuta

Dozwolone wartości dla tenant-id to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użyto nieprawidłowego punktu końcowego (kont osobistych i organizacyjnych) w Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertuj aplikację z jedną dzierżawą na wielodostępną w Microsoft Entra ID.

  • Przy użyciu tożsamości zarządzanej

    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}
    

Zmiany interfejsu API

  • Upuść nagłówek wiadomości AzureHeaders.RAW_ID. Użyj ServiceBusMessageHeaders.MESSAGE_ID zamiast tego.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-cloud-stream-binder-eventhubs na spring-cloud-azure-stream-binder-eventhubs.

Starsza klasa Nowoczesna klasa
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

Biblioteka com.azure.spring:azure-spring-cloud-messaging nie jest gotowa dla wersji 4.0. Funkcja adnotacji odbiornika jest w trakcie ponownego projektowania, dlatego adnotacje @AzureMessageListener, @AzureMessageListenersi @EnableAzureMessaging nie są obecnie obsługiwane.