Udostępnij za pośrednictwem


Przewodnik migracji dla platformy Spring Cloud Azure 4.0

Ten przewodnik ułatwia migrację do platformy Spring Cloud azure 4.0 ze starszych bibliotek platformy 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 deweloperów platformy Azure Spring Cloud, 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ż platforma 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 platformy Azure Spring Cloud.

Było kilka obszarów spójnych opinii wyrażonych w bibliotekach platformy Azure Spring Cloud. Najważniejsze jest to, że biblioteki dla różnych usług platformy 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 platformy Azure Spring Cloud, wprowadzono zestaw wytycznych dotyczących projektowania, aby zapewnić, że biblioteki platformy Azure spring mają naturalny i idiotyczny charakter w odniesieniu do ekosystemu Spring. Dalsze szczegóły są dostępne w dokument projektowy dla osób zainteresowanych.

Platforma Spring Cloud Azure 4.0 udostępnia wspólne środowisko między bibliotekami integrowanymi 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ę platformy Azure lub zestaw Azure Service SDK.

Przegląd

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

  • Zmiany nazewnictwa platformy Spring Cloud na platformie 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 platformy Azure Spring Cloud. 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 platformy Azure Spring.

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>5.20.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

Nuta

Jeśli używasz środowiska Spring Boot 2.x, ustaw wersję spring-cloud-azure-dependencies na 4.19.0. Aby uzyskać więcej informacji na temat wersji używanej dla tego modelu BOM, zobacz Której wersji platformy Spring Cloud platformy Azure należy używać.

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

Identyfikatory grup są takie same w przypadku nowoczesnych i starszych bibliotek platformy Azure Spring Cloud. Wszystkie są com.azure.spring. Identyfikatory artefaktów dla nowoczesnych bibliotek platformy Azure Spring Cloud 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 usługi Spring Data w usłudze Azure Cosmos DB.
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, aby użyć usługi Redis, wystarczy dodać spring-boot-starter-data-redis, spring-boot-starter-cache, spring-cloud-azure-resourcemanager i 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, aby użyć platformy kafka, wystarczy dodać spring kafka, spring-cloud-azure-resourcemanager i spring-cloud-azure-starter. Aby uzyskać więcej informacji na temat użycia, zobacz obsługa platformy Azure Kafka w usłudze Spring Cloud.
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 usługą 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-siłownik Nowo dodany artefakt siłownika platformy Azure Spring Cloud.
nie dotyczy spring-cloud-azure-siłownik-autokonfiguracja Nowo dodany artefakt autokonfiguracji siłownika platformy Azure Spring Cloud, w tym autokonfiguracja siłownika.
nie dotyczy spring-cloud-azure-autoconfigure Nowo dodany artefakt rozwiązania Spring Cloud Azure AutoConfigure, w tym wszystkie konfiguracje automatyczne 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 usługi Resource Manager. Jest to biblioteka Podstawowa korzystająca z usługi Azure Resource Manager do odczytywania metadanych i tworzenia zasobów.
nie dotyczy spring-cloud-azure-service Nowo dodany artefakt usługi Platformy Azure Spring Cloud, w tym abstrakcji dla usług platformy Azure.
nie dotyczy spring-cloud-azure-starter-appconfiguration Nowo dodany starter do korzystania z klienta zestawu SDK usługi Azure App Configuration.
nie dotyczy spring-cloud-azure-starter-cosmos Nowo dodany starter do korzystania z klienta zestawu SDK usługi Azure Cosmos DB.
nie dotyczy spring-cloud-azure-starter-eventhubs Nowo dodany starter do korzystania z klienta zestawu SDK usługi Azure Event Hubs.
nie dotyczy spring-cloud-azure-starter-servicebus Nowo dodany starter do korzystania z klienta zestawu SDK usługi Azure Service Bus.
nie dotyczy spring-cloud-azure-starter-storage-blob Nowo dodany starter do korzystania z klienta zestawu SDK obiektów blob usługi Azure Storage.
nie dotyczy spring-cloud-azure-starter-storage-file-share Nowo dodany starter do korzystania z klienta zestawu SDK udziału plików usługi Azure Storage.
nie dotyczy spring-cloud-azure-starter-storage-queue Nowo dodany starter do korzystania z klienta zestawu SDK kolejki usługi Azure Storage.
nie dotyczy spring-cloud-azure-starter-stream-eventhubs Nowo dodany szablon startowy do korzystania z narzędzia binder strumienia Spring Cloud w usłudze Azure Event Hubs.
nie dotyczy spring-cloud-azure-starter-stream-servicebus Nowo dodany starter do korzystania z narzędzia binder strumienia Spring Cloud usługi Azure Service Bus
nie dotyczy spring-cloud-azure-stream-binder-eventhubs-core Nowo dodany artefakt podstawowy usługi Spring Cloud Stream dla usługi 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 platformy 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 platformy 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 platformy Spring Cloud Azure 4.0, ponieważ może zastosować poświadczenia przechowywane w lokalnym środowisku programistycznym lub tożsamości zarządzanej w usługach platformy Azure. Upewnij się, że podmiot zabezpieczeń otrzymał wystarczające uprawnienia dostępu do docelowych zasobów platformy Azure.

Nuta

W przypadku przypisywania ról do podmiotów zabezpieczeń w celu interakcji z usługami obsługi komunikatów platformy Azure Data powiązanych ról są wymagane do przeprowadzania operacji obsługi komunikatów. W przypadku bibliotek usługi 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 ról wbudowanych platformy Azure.

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 biblioteki klienta Azure Identity dla języka Java.

Właściwości konfiguracji

Migracja właściwości

Utworzyliśmy plik additional-spring-configuration-metadata.json, aby wygładzyć migrację właściwości podczas korzystania z spring-boot-properties-migrator. 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 ona właściwości, które nie są już zarządzane przez platformę 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

Nowoczesna spring-cloud-azure-starter umożliwia definiowanie właściwości, które mają zastosowanie do wszystkich zestawów SDK platformy Azure 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 poniżej każdego zestawu Azure SDK.
spring.cloud.azure.credential Konfiguruje sposób uwierzytelniania za pomocą identyfikatora Entra firmy Microsoft.
spring.cloud.azure.profile Konfiguruje środowisko chmury platformy Azure.
spring.cloud.azure.proxy Konfiguruje opcje serwera proxy, które mają zastosowanie do wszystkich klientów zestawu Azure SDK.
spring.cloud.azure.retry Konfiguruje opcje ponawiania, mają zastosowanie do wszystkich klientów zestawu 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 Właściwości konfiguracji platformy Azure platformy Spring Cloud.

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.

Od azure-spring-boot-starter do spring-cloud-azure-starter

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter z wersji 3 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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 platformy Azure Platformy Azure 4.0 platformy Spring Cloud. 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 usługi azure-spring-boot-starter-active-directory do spring-cloud-azure-starter-active-directory

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-active-directory z wersji 3 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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 funkcji powiązanych z firmą Microsoft Entra. Wartość domyślna 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-cykl życia spring.cloud.azure.active-directory.jwk-set-cache-cykl życia.
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

    • W przypadku 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

    • W przypadku 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 usługi azure-spring-boot-starter-active-directory.

  • 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 witryny 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 z wersji 3 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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 platformy Azure Platformy Azure 4.0 platformy Spring Cloud. 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 zezwalania na włączanie/wyłączanie funkcji powiązanych z usługą Azure AD B2C. 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-name
  • Usunięto właściwości z polecenia 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:

    • Limit czasu połączenia jwt
    • 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 usługi 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 z wersji 3 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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 usługi 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 z wersji 3 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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].wielkość liter
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 we właściwości-źródle[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 wpisów tajnych 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 wpisów tajnych usługi Key Vault, dołączania do nich fasoli klienta wpisu tajnego usługi Key Vault (na przykład SecretClient i SecretAsyncClient) oraz dodawania 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 typowych właściwości platformy Azure (takich jak client, proxy, retry, credential, profile) i właściwości usługi Key Vault (takie 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 platformy Azure, więc jeśli nie jest skonfigurowany, nie uzyska wartości z innych miejsc.

Od 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 z wersji 3 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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 spring.jms.servicebus.idle-timeout zmienił się z long(milisekund) na wzorzec Duration w celu zapewnienia czytelności.

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

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-storage-blob z wersji 3 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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 magazynu azure-spring-boot-starter do spring-cloud-azure-starter-storage-file-share

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-storage-file-share z wersji 3 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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 witryny azure-spring-cloud-starter-eventhubs do spring-cloud-azure-starter-integration-eventhubs

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-integration-eventhubs z wersji 2 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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}

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ą usługi 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 witryny azure-spring-integration-eventhubs do spring-integration-azure-eventhubs

Ten przewodnik ma pomóc w migracji do spring-integration-azure-eventhubs z wersji 2 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 platformy Azure Spring Cloud, 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ą usługi 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

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

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-integration-servicebus z wersji 2 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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.servicebustyp transportu spring.cloud.azure.servicebus.client.transport-type
spring.cloud.azure.servicebus.retry-options.retry-mode spring.cloud.azure.servicebus.retry.mode
spring.cloud.azure.servicebus.retry-options.max-retries spring.cloud.azure.servicebus.retry.exponential.max-retries lub spring.cloud.azure.servicebus.retry.fixed.max-retries należy skonfigurować w zależności od spring.cloud.azure.servicebus.retry.mode=stałych lub wykładniczych
spring.cloud.azure.servicebus.retry-options.delay spring.cloud.azure.servicebus.retry.exponential.base-delay lub spring.cloud.azure.servicebus.retry.fixed.delay, należy skonfigurować w zależności od spring.cloud.azure.servicebus.retry.mode=stałych lub wykładniczych
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, a następnie przenieś funkcje, aby nasłuchiwać jednostki kolejki/tematu usługi Service Bus do klasy 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 ProducerProperties#entityTypenie podano fasoli PropertiesSupplier&lt;String, ProducerProperties&gt; .
  • Upuść nagłówek wiadomości AzureHeaders.RAW_ID. Zamiast tego użyj ServiceBusMessageHeaders.MESSAGE_ID.

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

Od azure-spring-integration-servicebus do spring-integration-azure-servicebus

Ten przewodnik ma pomóc w migracji do spring-integration-azure-servicebus z wersji 2 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 platformy Azure Spring Cloud, 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, a następnie przenieś funkcje, aby nasłuchiwać jednostki kolejki/tematu usługi Service Bus do klasy 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 ProducerProperties#entityTypenie podano fasoli PropertiesSupplier&lt;String, ProducerProperties&gt; .
  • Upuść nagłówek wiadomości AzureHeaders.RAW_ID. Zamiast tego użyj ServiceBusMessageHeaders.MESSAGE_ID.

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 usługi azure-spring-cloud-starter-storage-queue do spring-cloud-azure-starter-integration-storage-queue

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-starter-integration-storage-queue z wersji 2 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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 usługi azure-spring-integration-storage-queue do spring-integration-azure-storage-queue

Ten przewodnik ma pomóc w migracji do spring-integration-azure-storage-queue z wersji 2 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 platformy Azure Spring Cloud, 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 witryny azure-spring-cloud-stream-binder-eventhubs do spring-cloud-azure-stream-binder-eventhubs

Ten przewodnik ma pomóc w migracji do spring-cloud-azure-stream-binder-eventhubs z wersji 2 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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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ć parametrów połączenia 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

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 usługą Azure Resource Manager (ARM) z podanym podmiotem zabezpieczeń, a następnie pobierze parametry połączenia określonej przestrzeni nazw z usługą ARM. W końcu aplikacja używa pobranych parametrów połączenia w celu nawiązania połączenia z usługą Azure Event Hubs. W ten sposób należy przyznać podanemu podmiotowi zabezpieczeń rolę współautora w celu pobrania skojarzonej przestrzeni nazw usługi Azure Event Hubs.

W przypadku usługi 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 usłudze Microsoft Entra ID, a następnie łączą się bezpośrednio z usługą 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 platformy Azure, zobacz Autoryzowanie dostępu za pomocą identyfikatora Entra firmy Microsoft.

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 organizacji) sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje wdzierżawy. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Convert single-tenant app to multitenant on Microsoft Entra ID.

Wymagana jest nowoczesna konfiguracja, właściwości identyfikatora subskrypcji platformy 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 organizacji) sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje wdzierżawy. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Convert single-tenant app to multitenant on Microsoft Entra ID.

Możesz również przeprowadzić migrację do uwierzytelniania i autoryzacji za pomocą identyfikatora Entra firmy Microsoft 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 organizacji) sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje wdzierżawy. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Convert single-tenant app to multitenant on 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 z wersji 2 azure-spring-cloud-stream-binder-servicebus-queue lub azure-spring-cloud-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 platformy Azure Spring Cloud, zobacz sekcję BOM.
  • Aby dowiedzieć się, jak obsługiwać uwierzytelnianie w usłudze Spring Cloud Azure 4.0, zobacz sekcję Authentication changes (Zmiany uwierzytelniania).
  • 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.servicebustyp transportu spring.cloud.azure.servicebus.client.transport-type
spring.cloud.azure.servicebus.retry-options.retry-mode spring.cloud.azure.servicebus.retry.mode
spring.cloud.azure.servicebus.retry-options.max-retries spring.cloud.azure.servicebus.retry.exponential.max-retries lub spring.cloud.azure.servicebus.retry.fixed.max-retries należy skonfigurować w zależności od spring.cloud.azure.servicebus.retry.mode=stałych lub wykładniczych
spring.cloud.azure.servicebus.retry-options.delay spring.cloud.azure.servicebus.retry.exponential.base-delay lub spring.cloud.azure.servicebus.retry.fixed.delay, należy skonfigurować w zależności od spring.cloud.azure.servicebus.retry.mode=stałych lub wykładniczych
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.współbieżności spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions/max-concurrent-calls
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.tryb punktów kontrolnych spring.cloud.stream.servicebus.bindings.binding-name.consumer.autouzupełnianie
spring.cloud.stream.servicebus.topic.bindings.* spring.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.współbieżności spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions/max-concurrent-calls
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.tryb punktów kontrolnych spring.cloud.stream.servicebus.bindings.binding-name.consumer.autouzupełnianie

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

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 usługą Azure Resource Manager (ARM) z podanym podmiotem zabezpieczeń, a następnie pobierze parametry połączenia określonej przestrzeni nazw z usługą ARM. Na końcu aplikacja używa pobranych parametrów połączenia w celu nawiązania połączenia z usługą Azure Service Bus. W ten sposób należy udzielić podanego podmiotu zabezpieczeń z rolą współautora w celu pobrania skojarzonej przestrzeni nazw usługi Azure Service Bus.

W przypadku usługi 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 usłudze Microsoft Entra ID, a następnie łączą się bezpośrednio z usługą 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 platformy Azure, zobacz Autoryzowanie dostępu za pomocą identyfikatora Entra firmy Microsoft.

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 organizacji) sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje wdzierżawy. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Convert single-tenant app to multitenant on Microsoft Entra ID.

Wymagana jest nowoczesna konfiguracja, właściwości identyfikatora subskrypcji platformy 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 organizacji) sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje wdzierżawy. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Convert single-tenant app to multitenant on Microsoft Entra ID.

Możesz również przeprowadzić migrację do uwierzytelniania i autoryzacji za pomocą identyfikatora Entra firmy Microsoft 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 organizacji) sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje wdzierżawy. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Convert single-tenant app to multitenant on 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. Zamiast tego użyj ServiceBusMessageHeaders.MESSAGE_ID.

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.