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-* starszymi bibliotekami.

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

Zakłada się, że com.azure.spring:azure-spring-boot-*znajomość pakietu lub com.azure.spring:azure-spring-cloud-*com.azure.spring:azure-spring-integration-* .

Jeśli dopiero zaczynasz korzystać z bibliotek platformy Spring Cloud Azure 4.0, zapoznaj się z przewodnikiem dla deweloperów platformy Azure Spring Cloud, a nie z tego przewodnika.

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 celach projektowych 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.

Omówienie

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 Spring Cloud Azure projektu do reprezentowania wszystkich bibliotek platformy Azure Spring.

lista BOM

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

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

Uwaga

Jeśli używasz środowiska Spring Boot 3.x, pamiętaj, aby ustawić spring-cloud-azure-dependencies wersję na 5.8.0. Aby uzyskać więcej informacji na temat spring-cloud-azure-dependencies wersji, zobacz Która wersja platformy Spring Cloud powinna być używana przez platformę Azure.

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

Identyfikatory grup są takie same w przypadku nowoczesnych i starszych bibliotek platformy Azure Spring Cloud. To wszystko 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 spring-cloud-azure-starter artefaktem.
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ć dataelement wskazujący 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 spring-cloud-azure-autoconfigure artefaktem.
azure-spring-cloud-autoconfigure nie dotyczy Ten artefakt został usunięty ze wszystkimi funkcjami, które można scalić z nowym spring-cloud-azure-autoconfigure artefaktem.
azure-spring-cloud-context nie dotyczy Ten artefakt został usunięty ze wszystkimi funkcjami, które można scalić z nowymi spring-cloud-azure-autoconfigure artefaktami.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 Obsługa usługi Spring Cloud Azure Redis.
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 Spring Cloud Azure Kafka support (Obsługa platformy Azure Platformy Azure w usłudze Spring Cloud).
azure-spring-cloud-starter-eventhubs spring-cloud-azure-starter-integration-eventhubs Zmieniono nazwę artefaktu, aby dodać integrationelement wskazujący 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ć integrationelement wskazujący 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ć integrationelement wskazujący użycie integracji platformy Spring z kolejką magazynu.
azure-spring-cloud-storage nie dotyczy Ten artefakt został usunięty ze wszystkimi funkcjami scalanymi z nowym spring-cloud-azure-autoconfigure artefaktem.
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 konfiguracji aplikacja systemu Azure.
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.

Uwaga

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

Poświadczenie łańcuchowe, fasola DefaultAzureCredential jest domyślnie automatycznie konfigurowana 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 tożsamości platformy Azure 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-migratorprogramu . Najpierw dodaj następującą właściwość migracji do aplikacji:

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

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

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

Jeśli uruchomisz aplikację, zidentyfikuje 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.

Uwaga

W tej zmianie zmieniliśmy wiele właściwości konfiguracji. Użycie narzędzia spring-boot-properties-migrator ułatwi bezproblemowe migrację.

Konfiguracje globalne

Nowoczesne 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 starszej wersji azure-spring-boot-starter. Konfiguracje globalne można podzielić na pięć kategorii pokazanych w poniższej tabeli:

Prefiks 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 spring.cloud.azure.cosmos.retryma elementu .

Aby uzyskać pełną listę konfiguracji, zobacz Spring Cloud Azure configuration properties (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 rozwiązania spring-cloud-azure-starter z wersji 3 szablonu 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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 rozwiązania spring-cloud-azure-starter-active-directory z wersji 3 usługi 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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. Domyślna wartość to false.

W poniższej tabeli przedstawiono mapowania właściwości między azure-spring-boot-starter-active-directory i 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

Uwaga

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

Oto kilka przykładów migracji:

  • Przykład 1. Przypadek 1

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

    • Dla nowoczesnych: spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint=https://graph.microsoft.com/ + spring.cloud.azure.active-directory.user-group.use-transitive-members=false

  • Przykład 2. Przypadek 2

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

    • Dla nowoczesnych: spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint=https://graph.microsoft.com/ + spring.cloud.azure.active-directory.user-group.use-transitive-members=true

Zmiany w interfejsie API

W poniższej tabeli przedstawiono mapowania klas z azure-spring-boot-starter-active-directory do :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 usługi 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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 umożliwiającą 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 do :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-name spring.cloud.azure.active-directory.b2c.user-name-attribute-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 w interfejsie API

W poniższej tabeli przedstawiono mapowania klas z azure-spring-boot-starter-active-directory-b2c do :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 środowiska spring-cloud-azure-starter-data-cosmos z wersji 3 usługi 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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 do :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 jest przeznaczony do ułatwienia migracji do środowiska spring-cloud-azure-starter-keyvault-secrets z wersji 3 wpisów tajnych 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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 do :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 wpisu tajnego usługi Key Vault, dołączania do nich fasoli klienta wpisu tajnego usługi Key Vault (na przykład SecretClient i SecretAsyncClient) i dodawania KeyVaultPropertySource elementu ConfigurableEnvironment.
  3. spring.cloud.azure.keyvault.secret.property-source-enabled służy do włączania wszystkich KeyVaultPropertySourceelementów . 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, , proxyretry, credential, profile) i Key Vault właściwości (takie jak endpoint, service-version). Jeśli spring.cloud.azure.keyvault.secret.property-sources[n].PROPERTY_NAME nie skonfigurowano, spring.cloud.azure.keyvault.secret.PROPERTY_NAME zostanie użyty.
  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 otrzyma 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 rozwiązania spring-cloud-azure-starter-servicebus-jms w wersji 3 pakietu 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję Konfigurowanie poszczególnych zestawów SDK .
  • Aby dowiedzieć się więcej na temat globalnych i typowych zmian konfiguracji, zobacz sekcję Globalne konfiguracje .

Zmiany konfiguracji zestawu SDK

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

Z 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 magazynu 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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 do :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 w interfejsie API

W poniższej tabeli przedstawiono mapowania klas z azure-spring-boot-starter-storage do :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 magazynu spring-cloud-azure-starter-storage-file-share z wersji 3 magazynu 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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 do :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 w interfejsie API

W poniższej tabeli przedstawiono mapowania klas z azure-spring-boot-starter-storage do :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 rozwiązania spring-cloud-azure-starter-integration-eventhubs z wersji 2 usługi 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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żne

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 do :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}

na:

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 w interfejsie API

  • Aby uzyskać informacje o zmianach w adnotacjach odbiornika, zobacz przewodnik <<po migracji biblioteki migration-azure-spring-cloud-messaging, azure-spring-cloud-messaging>> .
  • Upuść EventHubOperation element z funkcją subskrybowania przeniesioną do klasy EventHubsMessageListenerContainer , a funkcja wysyłająca została przeniesiona do EventHubsTemplateklasy .
  • 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ń CheckpointConfig styl tworzenia wystąpienia na prosty konstruktor zamiast stylu kompilacji.
  • Upuść interfejs API EventHubOperation#setCheckpointConfig. Aby ustawić konfigurację punktu kontrolnego dla karty kanału przychodzącego, użytkownicy mogą wywołać metodę EventHubsContainerProperties#setCheckpointConfig.
  • Upuść interfejs API EventHubOperation#setBatchConsumerConfig. Aby ustawić konfigurację zużywaną wsadowo dla karty kanału przychodzącego, użytkownicy mogą wywoływać dwie metody EventHubsContainerProperties#getBatch#setMaxSize i EventHubsContainerProperties#getBatch#setMaxWaitTime w międzyczasie.
  • 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
  • BATCH Tryb punktu kontrolnego 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 do :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 usługi azure-spring-integration-eventhubs.

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek platformy Azure Spring Cloud, zobacz sekcję BOM .

Zmiany w interfejsie API

  • Upuść EventHubOperation element z funkcją subskrybowania przeniesioną do klasy EventHubsMessageListenerContainer , a funkcja wysyłająca została przeniesiona do EventHubsTemplateklasy .
  • 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ń CheckpointConfig styl tworzenia wystąpienia na prosty konstruktor zamiast stylu kompilacji.
  • Upuść interfejs API EventHubOperation#setCheckpointConfig. Aby ustawić konfigurację punktu kontrolnego dla karty kanału przychodzącego, użytkownicy mogą wywołać metodę EventHubsContainerProperties#setCheckpointConfig.
  • Upuść interfejs API EventHubOperation#setBatchConsumerConfig. Aby ustawić konfigurację zużywaną wsadowo dla karty kanału przychodzącego, użytkownicy mogą wywoływać dwie metody EventHubsContainerProperties#getBatch#setMaxSize i EventHubsContainerProperties#getBatch#setMaxWaitTime w międzyczasie.
  • 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
  • BATCH Tryb punktu kontrolnego 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 do :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 rozwiązania spring-cloud-azure-starter-integration-servicebus z wersji 2 pakietu 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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

Dla wszystkich opcji konfiguracji obsługiwanych w programie spring-cloud-azure-starter-integration-servicebusprefiks pozostaje jako spring.cloud.azure.servicebus.

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

Starsze właściwości Nowoczesne właściwości
spring.cloud.azure.resource-group spring.cloud.azure.servicebus.resource.resource-group
spring.cloud.azure.servicebus.transport-type spring.cloud.azure.servicebus.client.transport-type
spring.cloud.azure.servicebus.retry-options.retry-mode spring.cloud.azure.servicebus.retry.mode
spring.cloud.azure.servicebus.retry-options.max-retries spring.cloud.azure.servicebus.retry.exponential.max-retries lub spring.cloud.azure.servicebus.retry.fixed.max-retries, należy skonfigurować w zależności od spring.cloud.cloud.azure.servicebus.retry.mode=fixed lub wykładniczo
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=fixed lub wykładniczo
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 w interfejsie API

  • Upuść ServiceBusQueueOperation element i ServiceBusTopicOperation za pomocą funkcji subskrybowania przeniesiono do klasy ServiceBusMessageListenerContainer , a funkcja wysyłająca została przeniesiona do ServiceBusTemplateklasy .
  • Upuść ServiceBusQueueInboundChannelAdapter wartości i ServiceBusTopicInboundChannelAdapteri 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 ServiceBusQueueOperation#setCheckpointConfig API i ServiceBusTopicOperation#setCheckpointConfig. Aby ustawić konfigurację punktu kontrolnego dla karty kanału przychodzącego, użytkownicy mogą zamiast tego wywołać metodę ServiceBusContainerProperties#setAutoComplete . Wyłączenie trybu automatycznego ukończenia jest równoważne MANUAL trybowi punktu kontrolnego i włączeniu go spowoduje wyzwolenie RECORD trybu.
  • Upuść interfejsy ServiceBusQueueOperatio#setClientConfig API i ServiceBusTopicOperation#setClientConfig. Aby skonfigurować bazowe ServiceBusProcessorClient używane przez kartę kanału przychodzącego, użytkownicy mogą zamiast tego użyć ServiceBusContainerProperties .
  • Zamiast tego porzucaj CompletableFuture obsługę ServiceBusTemplate poleceń i DefaultMessageHandler.Reactor
  • Dodaj nowy interfejs API , ServiceBusTemplate#setDefaultEntityType aby określić typ jednostki, który jest wymagany, gdy dla elementu nie podano fasoli PropertiesSupplier&lt;String, ProducerProperties&gt;ProducerProperties#entityType.
  • Upuść nagłówek AzureHeaders.RAW_IDwiadomości . Użycie w zamian parametru ServiceBusMessageHeaders.MESSAGE_ID.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-cloud-starter-servicebus do :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życia 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 rozwiązania spring-integration-azure-servicebus z wersji 2 programu azure-spring-integration-servicebus.

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek platformy Azure Spring Cloud, zobacz sekcję BOM .

Zmiany w interfejsie API

  • Upuść ServiceBusQueueOperation element i ServiceBusTopicOperation za pomocą funkcji subskrybowania przeniesiono do klasy ServiceBusMessageListenerContainer , a funkcja wysyłająca została przeniesiona do ServiceBusTemplateklasy .
  • Upuść ServiceBusQueueInboundChannelAdapter wartości i ServiceBusTopicInboundChannelAdapteri 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 ServiceBusQueueOperation#setCheckpointConfig API i ServiceBusTopicOperation#setCheckpointConfig. Aby ustawić konfigurację punktu kontrolnego dla karty kanału przychodzącego, użytkownicy mogą zamiast tego wywołać metodę ServiceBusContainerProperties#setAutoComplete . Wyłączenie trybu automatycznego ukończenia jest równoważne MANUAL trybowi punktu kontrolnego i włączeniu go spowoduje wyzwolenie RECORD trybu.
  • Upuść interfejsy ServiceBusQueueOperation#setClientConfig API i ServiceBusTopicOperation#setClientConfig. Aby skonfigurować bazowe ServiceBusProcessorClient używane przez kartę kanału przychodzącego, użytkownicy mogą zamiast tego użyć ServiceBusContainerProperties .
  • Zamiast tego porzucaj CompletableFuture obsługę ServiceBusTemplate poleceń i DefaultMessageHandler.Reactor
  • Dodaj nowy interfejs API , ServiceBusTemplate#setDefaultEntityType aby określić typ jednostki, który jest wymagany, gdy dla elementu nie podano fasoli PropertiesSupplier&lt;String, ProducerProperties&gt;ProducerProperties#entityType.
  • Upuść nagłówek AzureHeaders.RAW_IDwiadomości . Użycie w zamian parametru ServiceBusMessageHeaders.MESSAGE_ID.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-integration-servicebus do :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 kolejki spring-cloud-cloud-azure-starter-integration-storage-queue z wersji 2 kolejki 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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 do :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 w interfejsie API

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

W poniższej tabeli przedstawiono mapowania klas z azure-spring-cloud-starter-storage-queue do 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 kolejki spring-integration-azure-storage-queue z wersji 2 kolejki azure-spring-integration-storage-queue.

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • Aby dowiedzieć się, jak używać jednego modelu BOM dla wszystkich bibliotek platformy Azure Spring Cloud, zobacz sekcję BOM .

Zmiany w interfejsie API

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

W poniższej tabeli przedstawiono mapowania klas z azure-spring-integration-storage-queue do 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 rozwiązania spring-cloud-azure-stream-binder-eventhubs z wersji 2 usługi 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 Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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żne

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

Ważne

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 do :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.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.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.bindings.binding-name.consumer.start-position spring.cloud.stream.eventhubs.bindings.binding-name.consumer.initial-partition-event-position

Uwaga

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

Przykłady migracji konfiguracji

Aby użyć parametry 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 parametry 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 pobranego parametry połączenia do nawiązywania połączenia z usługą Azure Event Hubs. W ten sposób należy przyznać podanemu podmiotowi zabezpieczeń rolę Współautor 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 parametry połączenia, w których Contributor rola 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 Contributor rola nie jest już konieczna, podczas gdy inne Data powiązane role są wymagane do 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}

Uwaga

Dozwolone tenant-id wartości to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użycie nieprawidłowego punktu końcowego (konta osobiste i konta organizacji) w sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertowanie aplikacji z jedną dzierżawą na wielodostępny w usłudze 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}

Uwaga

Dozwolone tenant-id wartości to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użycie nieprawidłowego punktu końcowego (konta osobiste i konta organizacji) w sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertowanie aplikacji z jedną dzierżawą na wielodostępny w usłudze 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 przyznano podmiotowi zabezpieczeń niezbędne Data role 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}
    

Uwaga

Dozwolone tenant-id wartości to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użycie nieprawidłowego punktu końcowego (konta osobiste i konta organizacji) w sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertowanie aplikacji z jedną dzierżawą na wielodostępny w usłudze 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 w interfejsie API

W poniższej tabeli przedstawiono mapowania klas z azure-spring-cloud-stream-binder-eventhubs do 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 elementu azure-spring-cloud-stream-binder-servicebus-queue lub azure-spring-cloud-stream-binder-servicebus-topic.

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

  • Aby zapoznać się z omówieniem zmian w wersji 4.0, zobacz sekcje Korzyści z wprowadzenia i migracji.
  • Aby dowiedzieć się więcej o zmianach strategii w nazewnictwie projektu, zobacz sekcję Nazewnictwo zmian .
  • 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ę Zmiany uwierzytelniania.
  • Aby dowiedzieć się, jak korzystać spring-boot-properties-migrator z migracji, zobacz sekcję 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żne

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

Ważne

Typ binder jest połączony z servicebus-queue wartościami i servicebus-topic jako servicebus.

W poniższej tabeli wymieniono nowe właściwości konfiguracji programu 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-* do :spring-cloud-azure-stream-binder-servicebus

Starsze właściwości Nowoczesne właściwości
spring.cloud.azure.resource-group spring.cloud.azure.servicebus.resource.resource-group
spring.cloud.azure.servicebus.transport-type spring.cloud.azure.servicebus.client.transport-type
spring.cloud.azure.servicebus.retry-options.retry-mode spring.cloud.azure.servicebus.retry.mode
spring.cloud.azure.servicebus.retry-options.max-retries spring.cloud.azure.servicebus.retry.exponential.max-retries lub spring.cloud.azure.servicebus.retry.fixed.max-retries, należy skonfigurować w zależności od spring.cloud.cloud.azure.servicebus.retry.mode=fixed lub wykładniczo
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=fixed lub wykładniczo
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łnij
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łnij

Uwaga

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

Uwaga

Włączenie autouzupełniania jest równe RECORD trybowi punktu kontrolnego MANUAL i w przeciwnym razie trybowi.

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 parametry 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 pobranego parametry połączenia do nawiązywania połączenia z usługą Azure Service Bus. W ten sposób należy przyznać podanemu podmiotowi zabezpieczeń rolę Współautor 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 parametry połączenia, w których Contributor rola 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 Contributor rola nie jest już konieczna, podczas gdy inne Data powiązane role są wymagane do 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}

Uwaga

Dozwolone tenant-id wartości to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użycie nieprawidłowego punktu końcowego (konta osobiste i konta organizacji) w sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertowanie aplikacji z jedną dzierżawą na wielodostępny w usłudze 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}

Uwaga

Dozwolone tenant-id wartości to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użycie nieprawidłowego punktu końcowego (konta osobiste i konta organizacji) w sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertowanie aplikacji z jedną dzierżawą na wielodostępny w usłudze 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 przyznano podmiotowi zabezpieczeń niezbędne Data role 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}
    

Uwaga

Dozwolone tenant-id wartości to: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użycie nieprawidłowego punktu końcowego (konta osobiste i konta organizacji) w sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje w dzierżawie. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Konwertowanie aplikacji z jedną dzierżawą na wielodostępny w usłudze 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 w interfejsie API

  • Upuść nagłówek AzureHeaders.RAW_IDwiadomości . Użycie w zamian parametru ServiceBusMessageHeaders.MESSAGE_ID.

W poniższej tabeli przedstawiono mapowania klas z azure-spring-cloud-stream-binder-eventhubs do 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, więc @AzureMessageListeneradnotacje , @AzureMessageListenersi @EnableAzureMessaging nie są obecnie obsługiwane.