Panduan migrasi untuk Spring Cloud Azure 4.0

Panduan ini membantu migrasi ke Spring Cloud Azure 4.0 dari pustaka warisan Azure Spring.

Perkenalan

Kami akan memanggil pustaka yang ID grup dan ID artefaknya mengikuti pola pustaka modern , dan pustaka dengan pola , , atau pustaka warisan .

Panduan ini akan berfokus pada perbandingan berdampingan untuk konfigurasi serupa antara pustaka modern dan warisan.

Pemahaman tentang paket com.azure.spring:azure-spring-boot-*, com.azure.spring:azure-spring-cloud-*, atau com.azure.spring:azure-spring-integration-* diasumsikan.

Jika Anda baru menggunakan pustaka Spring Cloud Azure 4.0, lihat panduan pengembang Spring Cloud Azure daripada panduan ini.

Manfaat migrasi

Pertanyaan alami untuk ditanyakan ketika mempertimbangkan apakah akan mengadopsi versi atau pustaka baru adalah manfaatnya. Karena Azure telah matang dan dirangkul oleh sekelompok pengembang yang lebih beragam, kami telah berfokus pada pembelajaran pola dan praktik untuk mendukung produktivitas pengembang dengan sebaik-baiknya dan untuk memahami kesenjangan yang dimiliki pustaka Spring Cloud Azure.

Ada beberapa area umpan balik konsisten yang dinyatakan di seluruh pustaka Spring Cloud Azure. Yang paling penting adalah bahwa pustaka untuk layanan Azure yang berbeda belum mengaktifkan serangkaian konfigurasi lengkap. Selain itu, inkonsistensi penamaan proyek, ID artefak, versi, dan konfigurasi membuat kurva pembelajaran terjal.

Untuk meningkatkan pengalaman pengembangan di seluruh pustaka Spring Cloud Azure, serangkaian pedoman desain diperkenalkan untuk memastikan bahwa pustaka Spring Cloud Azure memiliki nuansa alami dan idiomatik sehubungan dengan ekosistem Spring. Detail lebih lanjut tersedia dalam dokumen design bagi mereka yang tertarik.

Spring Cloud Azure 4.0 memberikan pengalaman bersama di seluruh pustaka yang terintegrasi dengan proyek Spring yang berbeda, misalnya Spring Boot, Spring Integration, Spring Cloud Stream, dan sebagainya. Pengalaman bersama meliputi:

  • BOM terpadu untuk menyertakan semua pustaka Spring Cloud Azure 4.0.
  • Konvensi penamaan yang konsisten untuk artefak.
  • Cara terpadu untuk mengonfigurasi kredensial, proksi, coba lagi, lingkungan cloud, dan pengaturan lapisan transportasi.
  • Mendukung semua metode autentikasi yang didukung Azure Service atau Azure Service SDK.

Ikhtisar

Panduan migrasi ini terdiri dari bagian berikut:

  • Perubahan penamaan untuk Spring Cloud Azure 4.0
  • Perubahan artefak: diganti namanya / ditambahkan / dihapus
  • Perubahan dependensi
  • Perubahan autentikasi
  • Properti konfigurasi
  • Perubahan pemecahan API
  • Perubahan pustaka

Penamaan perubahan

Tidak pernah ada nama yang konsisten atau resmi untuk memanggil semua pustaka Azure Spring Cloud. Beberapa di antaranya disebut Azure Spring Boot dan beberapa di antaranya Spring on Azure. Sejak 4.0, kami mulai menggunakan nama proyek Spring Cloud Azure untuk mewakili semua pustaka Azure Spring.

BOM

Kami biasa mengirim dua BOM untuk pustaka kami, azure-spring-boot-bom dan azure-spring-cloud-dependencies, tetapi kami menggabungkan kedua BOM ini menjadi satu BOM sejak 4.0, spring-cloud-azure-dependencies. Tambahkan entri di bagian dependencyManagement proyek Anda untuk mendapatkan manfaat dari manajemen dependensi.

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

Nota

Jika Anda menggunakan Spring Boot 4.0.x, pastikan untuk mengatur versi ke spring-cloud-azure-dependencies7.3.0.

Jika Anda menggunakan Spring Boot 3.5.x, pastikan untuk mengatur versi ke spring-cloud-azure-dependencies6.4.0.

Jika Anda menggunakan Spring Boot 3.1.x-3.5.x, pastikan untuk mengatur versi ke spring-cloud-azure-dependencies5.25.0.

Jika Anda menggunakan Spring Boot 2.x, pastikan untuk mengatur versi spring-cloud-azure-dependencies ke 4.20.0.

Bill of Material (BOM) ini harus dikonfigurasi di bagian <dependencyManagement> dari file pom.xml Anda. Ini memastikan bahwa semua dependensi Spring Cloud Azure menggunakan versi yang sama.

Untuk informasi selengkapnya tentang versi yang digunakan untuk BOM ini, lihat Versi Spring Cloud Azure Harus Saya Gunakan.

Perubahan artefak: diganti namanya / ditambahkan / dihapus

ID grup sama untuk pustaka Azure Spring Cloud modern dan warisan. Mereka semua com.azure.spring. ID artefak untuk pustaka Spring Cloud Azure modern telah berubah. Menurut proyek Spring miliknya, Spring Boot, Spring Integration, atau Spring Cloud Stream, pola ID artefak dapat spring-cloud-azure-starter-[service], spring-integration-azure-[service], atau spring-cloud-azure-stream-binder-[service]. Permulaan warisan untuk masing-masing memiliki ID artefak setelah pola azure-spring-*. Ini menyediakan cara yang cepat dan dapat diakses untuk membantu memahami, sekilas, baik Anda menggunakan pemula modern atau warisan.

Dalam proses pengembangan Spring Cloud Azure 4.0, kami mengganti nama beberapa artefak untuk membuatnya mengikuti konvensi penamaan baru, menghapus beberapa artefak sehingga fungsionalitas dapat dimasukkan ke dalam artefak yang lebih tepat, dan menambahkan beberapa artefak baru untuk melayani beberapa skenario dengan lebih baik.

Tabel berikut menunjukkan pemetaan antara ID artefak warisan dan ID artefak modern:

ID Artefak Warisan ID Artefak Modern Deskripsi
azure-spring-boot-starter spring-cloud-azure-starter Artefak ini telah dihapus dengan semua fungsionalitas digabungkan ke dalam artefak spring-cloud-azure-starter baru.
azure-spring-boot-starter-active-directory spring-cloud-azure-starter-active-directory Mengganti nama artefak.
azure-spring-boot-starter-active-directory-b2c spring-cloud-azure-starter-active-directory-b2c Mengganti nama artefak.
azure-spring-boot-starter-cosmos spring-cloud-azure-starter-data-cosmos Mengganti nama artefak untuk menambahkan data, yang menunjukkan penggunaan Spring Data Azure Cosmos DB.
azure-spring-boot-starter-keyvault-certificates tidak berlaku Tidak disertakan dalam rilis ini, tetapi akan didukung dalam versi yang lebih baru.
azure-spring-boot-starter-keyvault-secrets spring-cloud-azure-starter-keyvault-secrets Mengganti nama artefak.
azure-spring-boot-starter-servicebus-jms spring-cloud-azure-starter-servicebus-jms Mengganti nama artefak.
azure-spring-boot-starter-storage spring-cloud-azure-starter-storage-blob
spring-cloud-azure-starter-storage-file-share
Artefak warisan berisi fungsionalitas Blob Penyimpanan dan Berbagi File, itu telah disambungkan ke dalam dua artefak terpisah dalam 4.0, spring-cloud-azure-starter-storage-blob dan spring-cloud-azure-starter-storage-file-share.
azure-spring-boot tidak berlaku Artefak ini telah dihapus dengan semua fungsionalitas digabungkan ke dalam artefak spring-cloud-azure-autoconfigure baru.
azure-spring-cloud-autoconfigure tidak berlaku Artefak ini telah dihapus dengan semua fungsionalitas digabungkan ke dalam artefak spring-cloud-azure-autoconfigure baru.
azure-spring-cloud-context tidak berlaku Artefak ini telah dihapus dengan semua fungsionalitas digabungkan ke dalam artefak spring-cloud-azure-autoconfigure dan spring-cloud-azure-resourcemanager baru.
azure-spring-cloud-messaging spring-messaging-azure Anotasi pendengar pesan telah dihilangkan.
azure-spring-cloud-starter-cache tidak berlaku Artefak ini telah dihapus, untuk menggunakan redis, cukup tambahkan spring-boot-starter-data-redis, , spring-boot-starter-cachespring-cloud-azure-resourcemanager, dan spring-cloud-azure-starter. Untuk informasi selengkapnya tentang penggunaan, lihat dukungan Spring Cloud Azure Redis.
azure-spring-cloud-starter-eventhubs-kafka tidak berlaku Artefak ini telah dihapus, untuk menggunakan kafka, cukup tambahkan spring kafka, spring-cloud-azure-resourcemanager, dan spring-cloud-azure-starter. Untuk informasi selengkapnya tentang penggunaan, lihat dukungan Spring Cloud Azure Kafka.
azure-spring-cloud-starter-eventhubs spring-cloud-azure-starter-integration-eventhubs Mengganti nama artefak untuk menambahkan integration, yang menunjukkan penggunaan Integrasi Spring dengan Event Hubs.
azure-spring-cloud-starter-servicebus spring-cloud-azure-starter-integration-servicebus Mengganti nama artefak untuk menambahkan integration, yang menunjukkan penggunaan Integrasi Spring dengan Bus Layanan.
azure-spring-cloud-starter-storage-queue spring-cloud-azure-starter-integration-storage-queue Mengganti nama artefak untuk menambahkan integration, yang menunjukkan penggunaan Integrasi Spring dengan Antrean Penyimpanan.
azure-spring-cloud-storage tidak berlaku Artefak ini telah dihapus dengan semua fungsi yang digabungkan ke artefak spring-cloud-azure-autoconfigure baru.
azure-spring-cloud-stream-binder-eventhubs spring-cloud-azure-stream-binder-eventhubs Artefak ini telah direfaktor menggunakan desain baru, terutama spring-cloud-azure-stream-binder-eventhubs dan spring-cloud-azure-stream-binder-eventhubs-core.
azure-spring-cloud-stream-binder-service-core spring-cloud-azure-stream-binder-servicebus-core Mengganti nama artefak.
azure-spring-cloud-stream-binder-servicebus-queue spring-cloud-azure-stream-binder-servicebus Artefak ini telah dihapus dengan semua fungsionalitas digabungkan ke dalam artefak spring-cloud-azure-stream-binder-servicebus.
azure-spring-cloud-stream-binder-servicebus-topic spring-cloud-azure-stream-binder-servicebus Artefak ini telah dihapus dengan semua fungsionalitas digabungkan ke dalam artefak spring-cloud-azure-stream-binder-servicebus.
azure-spring-integration-core spring-integration-azure-core Mengganti nama artefak.
azure-spring-integration-eventhubs spring-integration-azure-eventhubs Ganti nama artefak.
azure-spring-integration-servicebus spring-integration-azure-servicebus Ganti nama artefak.
azure-spring-integration-storage-queue spring-integration-azure-storage-queue Ganti nama artefak.
tidak berlaku spring-cloud-azure-actuator Artefak Spring Cloud Azure Actuator yang baru ditambahkan.
tidak berlaku spring-cloud-azure-actuator-autoconfigure Artefak Konfigurasi Otomatis Spring Cloud Azure Actuator yang baru ditambahkan, termasuk konfigurasi otomatis untuk aktuator.
tidak berlaku spring-cloud-azure-autoconfigure Artefak Konfigurasi Otomatis Spring Cloud Azure yang baru ditambahkan, termasuk semua konfigurasi otomatis untuk klien SDK, dukungan Spring Security, dukungan Spring Data, dan dukungan Integrasi Spring.
tidak berlaku spring-cloud-azure-core Artefak Spring Cloud Azure Core yang baru ditambahkan, termasuk semua fungsi inti.
tidak berlaku spring-cloud-azure-resourcemanager Artefak Resource Manager yang baru ditambahkan. Ini adalah pustaka Core menggunakan Azure Resource Manager untuk membaca metadata dan membuat sumber daya.
tidak berlaku spring-cloud-azure-service Artefak Spring Cloud Azure Service yang baru ditambahkan, termasuk abstraksi untuk layanan Azure.
tidak berlaku spring-cloud-azure-starter-appconfiguration Pemula yang baru ditambahkan untuk menggunakan klien SDK Azure App Configuration.
tidak berlaku spring-cloud-azure-starter-cosmos Pemula yang baru ditambahkan untuk menggunakan klien SDK Azure Cosmos DB.
tidak berlaku spring-cloud-azure-starter-eventhubs Pemula yang baru ditambahkan untuk menggunakan klien SDK Azure Event Hubs.
tidak berlaku spring-cloud-azure-starter-servicebus Pemula yang baru ditambahkan untuk menggunakan klien SDK Azure Service Bus.
tidak berlaku spring-cloud-azure-starter-storage-blob Pemula yang baru ditambahkan untuk menggunakan klien Azure Storage Blob SDK.
tidak berlaku spring-cloud-azure-starter-storage-file-share Pemula yang baru ditambahkan untuk menggunakan klien SDK Berbagi File Azure Storage.
tidak berlaku spring-cloud-azure-starter-storage-queue Pemula yang baru ditambahkan untuk menggunakan klien SDK Antrean Azure Storage.
tidak berlaku spring-cloud-azure-starter-stream-eventhubs Pemula yang baru ditambahkan untuk menggunakan Azure Event Hubs Spring Cloud Stream Binder.
tidak berlaku spring-cloud-azure-starter-stream-servicebus Pemula yang baru ditambahkan untuk menggunakan Azure Service Bus Spring Cloud Stream Binder
tidak berlaku spring-cloud-azure-stream-binder-eventhubs-core Artefak inti Spring Cloud Stream yang baru ditambahkan untuk Azure Event Hubs.

Perubahan dependensi

Beberapa dependensi yang tidak perlu disertakan dalam artefak warisan, yang telah kami hapus di pustaka Spring Cloud Azure 4.0 modern. Pastikan untuk menambahkan dependensi yang dihapus secara manual ke proyek Anda untuk mencegah crash.

Pustaka yang memiliki perubahan dependensi meliputi:

Perubahan autentikasi

Spring Cloud Azure 4.0 mendukung semua metode autentikasi yang didukung setiap Azure Service SDK. Ini memungkinkan Anda untuk mengonfigurasi kredensial token global serta memberikan kredensial token di setiap tingkat layanan. Tetapi kredensial tidak diperlukan untuk mengonfigurasi Spring Cloud Azure 4.0 karena dapat menerapkan kredensial yang disimpan di lingkungan pengembangan lokal atau identitas terkelola di Azure Services. Pastikan perwakilan telah diberikan izin yang memadai untuk mengakses sumber daya Azure target.

Nota

Saat menetapkan peran kepada prinsip keamanan untuk berinteraksi dengan layanan olahpesan Azure, peran terkait Data diperlukan untuk melakukan operasi olahpesan. Untuk Azure Spring Apps pustaka Azure Stream Event Hubs / Bus Layanan Binder, peran Contributor diperlukan saat fungsi pembuatan sumber daya secara otomatis diperlukan. Untuk informasi selengkapnya, lihat peran bawaan Azure.

Kredensial berantai, kacang DefaultAzureCredential dikonfigurasi secara otomatis secara default dan akan digunakan oleh semua komponen jika tidak ada lagi informasi autentikasi yang ditentukan. Untuk informasi selengkapnya, lihat bagian DefaultAzureCredential pustaka klien Azure Identity untuk Java.

Properti konfigurasi

Migrasi properti

Kami telah membuat additional-spring-configuration-metadata.json file untuk memuluskan migrasi properti saat menggunakan dengan spring-boot-properties-migrator. Pertama, tambahkan migrasi properti berikut ke aplikasi Anda:

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

Atau, jika Anda menggunakan Gradle:

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

Jika Anda menjalankan aplikasi, aplikasi akan mengidentifikasi properti yang tidak lagi dikelola oleh Spring Cloud Azure. Jika ada penggantian, properti tersebut akan memetakan ulang properti untuk Anda sementara dengan peringatan. Jika tidak ada penggantian, laporan kesalahan akan memberi Anda informasi lebih lanjut. Bagaimanapun, konfigurasi harus diperbarui dan dependensi dihapus setelah Anda memperbarui konfigurasi.

Sebelum melanjutkan, ada baiknya menggunakan fitur pencarian IDE Anda untuk memeriksa kembali apakah Anda tidak menggunakan salah satu properti yang telah Anda migrasikan dalam pengujian integrasi.

Nota

Kami telah mengubah banyak properti konfigurasi dalam perubahan ini. Menggunakan spring-boot-properties-migrator akan membantu memuluskan migrasi Anda.

Konfigurasi global

spring-cloud-azure-starter modern memungkinkan Anda menentukan properti yang berlaku untuk semua Azure SDK di namespace spring.cloud.azure. Fitur ini tidak didukung di azure-spring-boot-starterwarisan. Konfigurasi global dapat dibagi menjadi lima kategori, yang diperlihatkan dalam tabel berikut:

Awalan Deskripsi
spring.cloud.azure.client Mengonfigurasi klien transportasi di bawah setiap Azure SDK.
spring.cloud.azure.credential Mengonfigurasi cara mengautentikasi dengan Microsoft Entra ID.
spring.cloud.azure.profile Mengonfigurasi lingkungan cloud Azure.
spring.cloud.azure.proxy Mengonfigurasi opsi proksi, berlaku untuk semua klien Azure SDK.
spring.cloud.azure.retry Mengonfigurasi opsi coba lagi, berlaku untuk semua klien Azure SDK. Opsi coba lagi telah mendukung bagian dari SDK, tidak ada spring.cloud.azure.cosmos.retry.

Untuk daftar lengkap konfigurasi, lihat properti konfigurasi Spring Cloud Azure.

Mengonfigurasi setiap SDK

Untuk detail tentang opsi konfigurasi di tingkat SDK, gunakan tautan berikut:

Perubahan pemecahan API

Untuk detail tentang perubahan pemecahan API di setiap pustaka, gunakan tautan berikut:

Perubahan pustaka

Perubahan yang melanggar di setiap pustaka diperkenalkan sebagai berikut.

Dari azure-spring-boot-starter ke spring-cloud-azure-starter

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-starter dari versi 3 dari azure-spring-boot-starter.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan dependensi

Beberapa dependensi yang tidak perlu disertakan dalam artefak warisan, yang telah kami hapus di pustaka Spring Cloud Azure 4.0 modern. Pastikan untuk menambahkan dependensi yang dihapus secara manual ke proyek Anda untuk mencegah crash yang tidak disengaja.

Tabel berikut ini memperlihatkan dependensi Dihapus:

Dependensi yang dihapus Deskripsi
org.springframework.boot:spring-boot-starter-validation Sertakan starter validasi jika Anda ingin menggunakan Validator Hibernate.

Dari azure-spring-boot-starter-active-directory ke spring-cloud-azure-starter-active-directory

Panduan ini dimaksudkan untuk membantu migrasi ke spring-cloud-azure-starter-active-directory dari versi 3 dari azure-spring-boot-starter-active-directory.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan dependensi

Beberapa dependensi yang tidak perlu dalam artefak warisan telah dihapus sejak pustaka Spring Cloud Azure 4.0 modern. Tambahkan dependensi yang dihapus ini ke proyek Anda untuk mencegah crash yang tidak disengaja.

Tabel berikut ini memperlihatkan dependensi Dihapus:

Dependensi yang dihapus Deskripsi
com.fasterxml.jackson.core:jackson-databind Tambahkan dependensi ini ke proyek Anda jika diperlukan.
io.projectreactor.netty:reactor-netty Tambahkan dependensi ini ke proyek Anda jika diperlukan.
org.springframework.boot:spring-boot-starter-validation Tambahkan dependensi ini ke proyek Anda jika diperlukan.
org.springframework.boot:spring-boot-starter-webflux Tambahkan dependensi ini ke proyek Anda jika diperlukan.

Perubahan konfigurasi SDK

Bagian ini mencakup perubahan tentang properti yang ditambahkan, dihapus, dan diubah.

  • Dua poin berikut adalah yang utama untuk diperhatikan:
  1. Semua awalan nama properti konfigurasi diubah dari azure.activedirectory ke spring.cloud.azure.active-directory.
  2. Properti baru spring.cloud.azure.active-directory.enabled ditambahkan untuk mengaktifkan/menonaktifkan fitur terkait Microsoft Entra. Nilai defaultnya adalah false.

Tabel berikut ini memperlihatkan pemetaan properti antara azure-spring-boot-starter-active-directory dan spring-cloud-azure-starter-active-directory:

Properti warisan Properti modern
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 Periksa tabel berikut untuk informasi selengkapnya.
azure.activedirectory.jwt-connect-timeout spring.cloud.azure.active-directory.jwt-connect-timeout
azure.activedirectory.jwt-read-timeout spring.cloud.azure.active-directory.jwt-read-timeout
azure.activedirectory.jwt-size-limit spring.cloud.azure.active-directory.jwt-size-limit
azure.activedirectory.jwk-set-cache-lifespan spring.cloud.azure.active-directory.jwk-set-cache-lifespan
azure.activedirectory.jwk-set-cache-refresh-time spring.cloud.azure.active-directory.jwk-set-cache-refresh-time
azure.activedirectory.post-logout-redirect-uri spring.cloud.azure.active-directory.post-logout-redirect-uri
azure.activedirectory.session-stateless spring.cloud.azure.active-directory.session-stateless
azure.activedirectory.redirect-uri-template spring.cloud.azure.active-directory.redirect-uri-template
azure.activedirectory.resource-server.claim-to-authority-prefix-map spring.cloud.azure.active-directory.resource-server.claim-to-authority-prefix-map
azure.activedirectory.resource-server.principal-claim-name spring.cloud.azure.active-directory.resource-server.principal-claim-name
azure.activedirectory.tenant-id spring.cloud.azure.active-directory.profile.tenant-id
azure.activedirectory.user-group.allowed-group-ids spring.cloud.azure.active-directory.user-group.allowed-group-ids
azure.activedirectory.user-group.allowed-group-names spring.cloud.azure.active-directory.user-group.allowed-group-names
azure.activedirectory.user-name-attribute spring.cloud.azure.active-directory.user-name-attribute
  • Jenis nilai properti berikut diubah dari long menjadi Duration:

    • jwt-connect-timeout
    • jwt-read-timeout
    • jwk-set-cache-lifespan
    • jwk-set-cache-refresh-time.
  • Properti berikut dihapus:

    • azure.activedirectory.allow-telemetry
    • azure.activedirectory.user-group.enable-full-list
    • azure.activedirectory.graph-base-uri
    • azure.activedirectory.graph-membership-uri
  • Properti berikut ditambahkan:

    • 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

Nota

Fungsi azure.activedirectory.graph-membership-uri telah digantikan oleh 2 properti: spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint dan spring.cloud.azure.active-directory.user-group.use-transitive-members. Properti pertama digunakan untuk menentukan nama host, dan bendera kedua untuk menggunakan jalur URL: v1.0/me/memberOf atau v1.0/me/transitiveMemberOf.

Berikut adalah beberapa contoh migrasi:

  • Contoh 1. Kasus 1

    • Untuk warisan: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/memberOf

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

  • Contoh 2. Kasus 2

    • Untuk warisan: azure.activedirectory.graph-membership-uri=https://graph.microsoft.com/v1.0/me/transitiveMemberOf

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

Perubahan API

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-boot-starter-active-directory ke spring-cloud-azure-starter-active-directory:

Kelas warisan Kelas modern
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

Bagian ini mencantumkan kelas yang dihapus dari azure-spring-boot-starter-active-directory.

  • Menghapus kelas warisan

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

Dari azure-spring-boot-starter-active-directory-b2c ke spring-cloud-azure-starter-active-directory-b2c

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-starter-active-directory-b2c dari versi 3 dari azure-spring-boot-starter-active-directory-b2c.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan dependensi

Beberapa dependensi yang tidak perlu disertakan dalam artefak warisan, yang telah kami hapus di pustaka Spring Cloud Azure 4.0 modern. Pastikan untuk menambahkan dependensi yang dihapus secara manual ke proyek Anda untuk mencegah crash yang tidak disengaja.

Tabel berikut ini memperlihatkan dependensi Dihapus:

Dependensi yang dihapus Deskripsi
org.springframework.boot:spring-boot-starter-validation Sertakan starter validasi jika Anda ingin menggunakan Validator Hibernate.

Perubahan konfigurasi SDK

Bagian ini mencakup perubahan tentang properti yang ditambahkan, dihapus, dan diubah.

  • Dua poin berikut adalah yang utama untuk diperhatikan:
  1. Semua nama properti konfigurasi mengubah awalan dari azure.activedirectory.b2c menjadi spring.cloud.azure.active-directory.b2c.
  2. Properti baru spring.cloud.azure.active-directory.b2c.enabled ditambahkan untuk memungkinkan mengaktifkan/menonaktifkan fitur terkait Azure AD B2C. Nilai defaultnya adalah false.

Tabel berikut ini memperlihatkan pemetaan properti dari azure-spring-boot-starter-active-directory-b2c ke spring-cloud-azure-starter-active-directory-b2c:

Properti warisan Properti modern
azure.activedirectory.b2c.authenticate-additional-parameters spring.cloud.azure.active-directory.b2c.authenticate-additional-parameters
azure.activedirectory.b2c.authorization-clients spring.cloud.azure.active-directory.b2c.authorization-clients
azure.activedirectory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.authorization-grant-type spring.cloud.azure.active-directory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.authorization-grant-type
azure.activedirectory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.scopes spring.cloud.azure.active-directory.b2c.authorization-clients.<AZURE-CLIENT-NAME>.scopes
azure.activedirectory.b2c.app-id-uri spring.cloud.azure.active-directory.b2c.app-id-uri
azure.activedirectory.b2c.base-uri spring.cloud.azure.active-directory.b2c.base-uri
azure.activedirectory.b2c.client-id spring.cloud.azure.active-directory.b2c.credential.client-id
azure.activedirectory.b2c.client-secret spring.cloud.azure.active-directory.b2c.credential.client-secret
azure.activedirectory.b2c.jwt-connect-timeout spring.cloud.azure.active-directory.b2c.jwt-connect-timeout
azure.activedirectory.b2c.jwt-read-timeout spring.cloud.azure.active-directory.b2c.jwt-read-timeout
azure.activedirectory.b2c.jwt-size-limit spring.cloud.azure.active-directory.b2c.jwt-size-limit
azure.activedirectory.b2c.login-flow spring.cloud.azure.active-directory.b2c.login-flow
azure.activedirectory.b2c.logout-success-url spring.cloud.azure.active-directory.b2c.logout-success-url
azure.activedirectory.b2c.reply-url spring.cloud.azure.active-directory.b2c.reply-url
azure.activedirectory.b2c.tenant-id spring.cloud.azure.active-directory.b2c.profile.tenant-id
azure.activedirectory.b2c.user-flows spring.cloud.azure.active-directory.b2c.user-flows
azure.activedirectory.b2c.user-name-attribute-name spring.cloud.azure.active-directory.b2c.user-name-attribute-name
  • Properti yang dihapus dari azure-spring-boot-starter-active-directory-b2c:

    • azure.activedirectory.b2c.allow-telemetry
    • azure.activedirectory.b2c.tenant
  • Jenis nilai properti berikut diubah dari long menjadi Duration:

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

Perubahan API

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-boot-starter-active-directory-b2c ke spring-cloud-azure-starter-active-directory-b2c:

Kelas warisan Kelas modern
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

Dari azure-spring-boot-starter-cosmos ke spring-cloud-azure-starter-data-cosmos

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-starter-data-cosmos dari versi 3 dari azure-spring-boot-starter-cosmos.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan konfigurasi SDK

Semua nama properti konfigurasi mengubah awalan dari azure.cosmos menjadi spring.cloud.azure.cosmos.

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-boot-starter-cosmos ke spring-cloud-azure-starter-data-cosmos:

Properti warisan Properti modern
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

Dari azure-spring-boot-starter-keyvault-secrets ke spring-cloud-azure-starter-keyvault-secrets

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-starter-keyvault-secrets dari versi 3 dari azure-spring-boot-starter-keyvault-secrets.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan konfigurasi SDK

Bagian ini mencakup perubahan tentang properti yang ditambahkan, dihapus, dan diubah.

Tabel berikut ini memperlihatkan pemetaan properti dari azure-spring-boot-starter-keyvault-secrets ke spring-cloud-azure-starter-keyvault-secrets:

Properti warisan Properti modern
azure.keyvault.case-sensitive-keys spring.cloud.azure.keyvault.secret.property-source[n].case-sensitive
azure.keyvault.certificate-password spring.cloud.azure.keyvault.secret.property-source[n].credential.client-certificate-password
azure.keyvault.certificate-path spring.cloud.azure.keyvault.secret.property-source[n].credential.client-certificate-path
azure.keyvault.client-id spring.cloud.azure.keyvault.secret.property-source[n].credential.client-id
azure.keyvault.client-key spring.cloud.azure.keyvault.secret.property-source[n].credential.client-secret
azure.keyvault.enabled spring.cloud.azure.keyvault.secret.property-source-enabled dan spring.cloud.azure.keyvault.secret.property-source-enabled
azure.keyvault.order Tidak lagi didukung. Gunakan urutan sebagai property-source[n] gantinya.
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
  • Properti yang dihapus dari spring-cloud-azure-starter-keyvault-secrets:

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

Poin-poin berikut yang harus Anda perhatikan:

  1. Semua nama properti konfigurasi mengubah awalan dari azure.keyvault menjadi spring.cloud.azure.keyvault.secret.
  2. spring.cloud.azure.keyvault.secret.enabled digunakan untuk mengaktifkan semua fitur Rahasia Key Vault, termasuk mengonfigurasi Key Vault biji klien rahasia (seperti SecretClient dan SecretAsyncClient) dan menambahkan KeyVaultPropertySource di ConfigurableEnvironment.
  3. spring.cloud.azure.keyvault.secret.property-source-enabled digunakan untuk mengaktifkan semua KeyVaultPropertySource. Ini akan berlaku hanya ketika spring.cloud.azure.keyvault.secret.enabled=true.
  4. Untuk properti umum Azure(seperti client, proxy, retry, credential, profile) dan properti Key Vault(seperti properti endpoint, service-version). Jika spring.cloud.azure.keyvault.secret.property-sources[n].PROPERTY_NAME tidak dikonfigurasi, spring.cloud.azure.keyvault.secret.PROPERTY_NAME akan digunakan.
  5. spring.cloud.azure.keyvault.secret.property-sources[n].resource khusus untuk sumber daya Azure unik, jadi jika tidak dikonfigurasi, sumber daya tersebut tidak akan mendapatkan nilai dari tempat lain.

Dari azure-spring-boot-starter-servicebus-jms ke spring-cloud-azure-starter-servicebus-jms

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-starter-servicebus-jms dari versi 3 dari azure-spring-boot-starter-servicebus-jms.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan konfigurasi SDK

Jenis konfigurasi untuk spring.jms.servicebus.idle-timeout diubah dari long (milidetik) ke Duration pola untuk keterbacaan.

Dari azure-spring-boot-starter-storage ke spring-cloud-azure-starter-storage-blob

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-starter-storage-blob dari versi 3 dari azure-spring-boot-starter-storage.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan konfigurasi SDK

Semua nama properti konfigurasi mengubah awalan dari azure.storage menjadi spring.cloud.azure.storage.blob.

Tabel berikut ini memperlihatkan pemetaan properti dari azure-spring-boot-starter-storage ke spring-cloud-azure-starter-storage-blob:

Properti warisan Properti modern
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

Perubahan API

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-boot-starter-storage ke spring-cloud-azure-starter-storage-blob:

Kelas warisan Kelas modern
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

Dari azure-spring-boot-starter-storage ke spring-cloud-azure-starter-storage-file-share

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-starter-storage-file-share dari versi 3 dari azure-spring-boot-starter-storage.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan konfigurasi SDK

Semua nama properti konfigurasi mengubah awalan dari azure.storage menjadi spring.cloud.azure.storage.fileshare.

Tabel berikut ini memperlihatkan pemetaan properti dari azure-spring-boot-starter-storage ke spring-cloud-azure-starter-storage-file-share:

Properti warisan Properti modern
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

Perubahan API

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-boot-starter-storage ke spring-cloud-azure-starter-storage-file-share:

Kelas warisan Kelas modern
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

Dari azure-spring-cloud-starter-eventhubs ke spring-cloud-azure-starter-integration-eventhubs

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-starter-integration-eventhubs dari versi 2 dari azure-spring-cloud-starter-eventhubs.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan konfigurasi SDK

Penting

Awalan konfigurasi telah diubah dari spring.cloud.azure.eventhub ke spring.cloud.azure.eventhubs.

Untuk perubahan entri anak untuk awalan ini, lihat tabel berikut:

Tabel berikut ini memperlihatkan pemetaan properti dari azure-spring-cloud-starter-eventhubs ke spring-cloud-azure-starter-integration-eventhubs:

Properti warisan Properti modern
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

Misalnya, ubah dari:

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}

ke:

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

Nota

Microsoft merekomendasikan penggunaan alur autentikasi paling aman yang tersedia. Alur autentikasi yang dijelaskan dalam prosedur ini, seperti untuk database, cache, olahpesan, atau layanan AI, memerlukan tingkat kepercayaan yang sangat tinggi dalam aplikasi dan membawa risiko yang tidak ada dalam alur lain. Gunakan alur ini hanya ketika opsi yang lebih aman, seperti identitas terkelola untuk koneksi tanpa kata sandi atau tanpa kunci, tidak layak. Untuk operasi komputer lokal, lebih suka identitas pengguna untuk koneksi tanpa kata sandi atau tanpa kunci.

Perubahan API

  • Untuk perubahan pada anotasi pendengar, lihat panduan migrasi pustaka<< migrasi >>-azure-spring-cloud-messaging, azure-spring-cloud-messaging.
  • Jatuhkan EventHubOperation dengan fungsi berlangganan dipindahkan ke EventHubsMessageListenerContainer kelas dan fungsi pengiriman dipindahkan ke EventHubsTemplate.
  • Ganti nama EventHubInboundChannelAdapter sebagai EventHubsInboundChannelAdapter agar tetap konsisten dengan layanan Azure Event Hubs.
  • Ubah konstruktor dari EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String) menjadi EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) dan EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Ubah gaya instansiasi CheckpointConfig ke konstruktor sederhana alih-alih gaya build.
  • Hilangkan API EventHubOperation#setCheckpointConfig. Untuk mengatur konfigurasi titik pemeriksaan untuk adaptor saluran masuk, pengguna dapat memanggil metode EventHubsContainerProperties#setCheckpointConfig.
  • Hilangkan API EventHubOperation#setBatchConsumerConfig. Untuk mengatur konfigurasi yang menggunakan batch untuk adaptor saluran masuk, pengguna dapat memanggil dua metode EventHubsContainerProperties#getBatch#setMaxSize dan EventHubsContainerProperties#getBatch#setMaxWaitTime sementara itu.
  • Untuk mode penggunaan batch, ubah nama header pesan yang dikonversi dari pesan batch.
    • Ubah header pesan dari azure_eventhub_enqueued_time menjadi azure_eventhubs_batch_converted_enqueued_time.
    • Ubah header pesan dari azure_eventhub_offset menjadi azure_eventhubs_batch_converted_offset.
    • Ubah header pesan dari azure_eventhub_sequence_number menjadi azure_eventhubs_batch_converted_sequence_number.
    • Ubah header pesan dari azure_partition_key menjadi azure_batch_converted_partition_key.
  • Saat menerbitkan pesan ke Azure Event Hubs, abaikan semua header pesan yang dikonversi dari pesan batch. Header meliputi:
    • 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
  • Mode titik pemeriksaan BATCH hanya berfungsi dalam mode penggunaan batch sekarang, yang dapat diaktifkan dengan meneruskan ListenerMode.BATCH ke konstruktor EventHubsInboundChannelAdapter.

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-cloud-starter-eventhubs ke spring-cloud-azure-starter-integration-eventhubs:

Kelas warisan Kelas modern
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

Cuplikan kode sampel

  • EventHubsInboundChannelAdapter kode sampel:

    Kode warisan:

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

    Kode modern:

    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 kode sampel:

    Kode warisan:

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

    Kode modern:

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

Dari azure-spring-integration-eventhubs ke spring-integration-azure-eventhubs

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-integration-azure-eventhubs dari versi 2 dari azure-spring-integration-eventhubs.

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.

Perubahan API

  • Jatuhkan EventHubOperation dengan fungsi berlangganan dipindahkan ke EventHubsMessageListenerContainer kelas dan fungsi pengiriman dipindahkan ke EventHubsTemplate.
  • Ganti nama EventHubInboundChannelAdapter sebagai EventHubsInboundChannelAdapter agar tetap konsisten dengan layanan Azure Event Hubs.
  • Ubah konstruktor dari EventHubInboundChannelAdapter(String, SubscribeByGroupOperation, String) menjadi EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer) dan EventHubsInboundChannelAdapter(EventHubsMessageListenerContainer, ListenerMode).
  • Ubah gaya instansiasi CheckpointConfig ke konstruktor sederhana alih-alih gaya build.
  • Hilangkan API EventHubOperation#setCheckpointConfig. Untuk mengatur konfigurasi titik pemeriksaan untuk adaptor saluran masuk, pengguna dapat memanggil metode EventHubsContainerProperties#setCheckpointConfig.
  • Hilangkan API EventHubOperation#setBatchConsumerConfig. Untuk mengatur konfigurasi yang menggunakan batch untuk adaptor saluran masuk, pengguna dapat memanggil dua metode EventHubsContainerProperties#getBatch#setMaxSize dan EventHubsContainerProperties#getBatch#setMaxWaitTime sementara itu.
  • Untuk mode penggunaan batch, ubah nama header pesan yang dikonversi dari pesan batch.
    • Ubah header pesan dari azure_eventhub_enqueued_time menjadi azure_eventhubs_batch_converted_enqueued_time.
    • Ubah header pesan dari azure_eventhub_offset menjadi azure_eventhubs_batch_converted_offset.
    • Ubah header pesan dari azure_eventhub_sequence_number menjadi azure_eventhubs_batch_converted_sequence_number.
    • Ubah header pesan dari azure_partition_key menjadi azure_batch_converted_partition_key.
  • Saat menerbitkan pesan ke Azure Event Hubs, abaikan semua header pesan yang dikonversi dari pesan batch. Header meliputi:
    • 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
  • Mode titik pemeriksaan BATCH hanya berfungsi dalam mode penggunaan batch sekarang, yang dapat diaktifkan dengan meneruskan ListenerMode.BATCH ke konstruktor EventHubsInboundChannelAdapter.

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-integration-eventhubs ke spring-integration-azure-eventhubs:

Kelas warisan Kelas modern
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

Dari azure-spring-cloud-starter-servicebus ke spring-cloud-azure-starter-integration-servicebus

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-starter-integration-servicebus dari versi 2 dari azure-spring-cloud-starter-servicebus.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan konfigurasi SDK

Untuk semua opsi konfigurasi yang didukung di spring-cloud-azure-starter-integration-servicebus, awalan tetap sebagai spring.cloud.azure.servicebus.

Tabel berikut ini memperlihatkan pemetaan properti dari azure-spring-cloud-starter-servicebus ke spring-cloud-azure-starter-integration-servicebus:

Properti warisan Properti modern
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-retriesatau spring.cloud.azure.servicebus.retry.fixed.max-retries, harus dikonfigurasi tergantung padaspring.cloud.azure.servicebus.retry.mode = fixed atauexponential
spring.cloud.azure.servicebus.retry-options.delay spring.cloud.azure.servicebus.retry.exponential.base-delayatau spring.cloud.azure.servicebus.retry.fixed.delay, harus dikonfigurasi tergantung padaspring.cloud.azure.servicebus.retry.mode = fixed atauexponential
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

Perubahan API

  • Jatuhkan ServiceBusQueueOperation dan ServiceBusTopicOperation dengan fungsi berlangganan dipindahkan ke ServiceBusMessageListenerContainer kelas dan fungsi pengiriman dipindahkan ke ServiceBusTemplate.
  • Jatuhkan ServiceBusQueueInboundChannelAdapter dan ServiceBusTopicInboundChannelAdapter, dan pindahkan fungsionalitas untuk mendengarkan entitas antrean/topik Bus Layanan ke ServiceBusInboundChannelAdapter.
  • Ubah konstruktor dari ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String) menjadi ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) dan ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Ubah konstruktor dari ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String) menjadi ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) dan ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Hilangkan API ServiceBusQueueOperation#setCheckpointConfig dan ServiceBusTopicOperation#setCheckpointConfig. Untuk mengatur konfigurasi titik pemeriksaan untuk adaptor saluran masuk, pengguna dapat memanggil metode ServiceBusContainerProperties#setAutoComplete sebagai gantinya. Untuk menonaktifkan mode lengkapi otomatis setara dengan mode titik pemeriksaan MANUAL dan untuk mengaktifkannya akan memicu mode RECORD.
  • Hilangkan API ServiceBusQueueOperatio#setClientConfig dan ServiceBusTopicOperation#setClientConfig. Untuk mengonfigurasi ServiceBusProcessorClient yang mendasar yang digunakan oleh adaptor saluran masuk, pengguna dapat menggunakan ServiceBusContainerProperties sebagai gantinya.
  • Hilangkan dukungan CompletableFuture di ServiceBusTemplate dan DefaultMessageHandler, dukung Reactor sebagai gantinya.
  • Tambahkan API baru ServiceBusTemplate#setDefaultEntityType untuk menentukan jenis entitas, yang diperlukan ketika tidak ada kacang PropertiesSupplier&lt;String, ProducerProperties&gt; yang disediakan untuk ProducerProperties#entityType.
  • Jatuhkan header pesan AzureHeaders.RAW_ID. Gunakan ServiceBusMessageHeaders.MESSAGE_ID sebagai gantinya.

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-cloud-starter-servicebus ke spring-cloud-azure-starter-integration-servicebus:

Kelas warisan Kelas modern
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

Cuplikan kode sampel

  • ServiceBusInboundChannelAdapter kode sampel:

    Kode warisan menggunakan ServiceBusQueueInboundChannelAdapter atau 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;
        }
    
    }
    

    Kode modern:

    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 kode sampel:

    Kode warisan, mengambil antrean sebagai contoh:

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

    Kode modern:

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

Dari azure-spring-integration-servicebus ke spring-integration-azure-servicebus

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-integration-azure-servicebus dari versi 2 dari azure-spring-integration-servicebus.

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.

Perubahan API

  • Jatuhkan ServiceBusQueueOperation dan ServiceBusTopicOperation dengan fungsi berlangganan dipindahkan ke ServiceBusMessageListenerContainer kelas dan fungsi pengiriman dipindahkan ke ServiceBusTemplate.
  • Jatuhkan ServiceBusQueueInboundChannelAdapter dan ServiceBusTopicInboundChannelAdapter, dan pindahkan fungsionalitas untuk mendengarkan entitas antrean/topik Bus Layanan ke ServiceBusInboundChannelAdapter.
  • Ubah konstruktor dari ServiceBusQueueInboundChannelAdapter(String, SubscribeByGroupOperation, String) menjadi ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) dan ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Ubah konstruktor dari ServiceBusTopicInboundChannelAdapter(String, SubscribeByGroupOperation, String) menjadi ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer) dan ServiceBusInboundChannelAdapter(ServiceBusMessageListenerContainer, ListenerMode).
  • Hilangkan API ServiceBusQueueOperation#setCheckpointConfig dan ServiceBusTopicOperation#setCheckpointConfig. Untuk mengatur konfigurasi titik pemeriksaan untuk adaptor saluran masuk, pengguna dapat memanggil metode ServiceBusContainerProperties#setAutoComplete sebagai gantinya. Untuk menonaktifkan mode lengkapi otomatis setara dengan mode titik pemeriksaan MANUAL dan untuk mengaktifkannya akan memicu mode RECORD.
  • Hilangkan API ServiceBusQueueOperation#setClientConfig dan ServiceBusTopicOperation#setClientConfig. Untuk mengonfigurasi ServiceBusProcessorClient yang mendasar yang digunakan oleh adaptor saluran masuk, pengguna dapat menggunakan ServiceBusContainerProperties sebagai gantinya.
  • Hilangkan dukungan CompletableFuture di ServiceBusTemplate dan DefaultMessageHandler, dukung Reactor sebagai gantinya.
  • Tambahkan API baru ServiceBusTemplate#setDefaultEntityType untuk menentukan jenis entitas, yang diperlukan ketika tidak ada kacang PropertiesSupplier&lt;String, ProducerProperties&gt; yang disediakan untuk ProducerProperties#entityType.
  • Jatuhkan header pesan AzureHeaders.RAW_ID. Gunakan ServiceBusMessageHeaders.MESSAGE_ID sebagai gantinya.

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-integration-servicebus ke spring-integration-azure-servicebus:

Kelas warisan Kelas modern
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

Dari azure-spring-cloud-starter-storage-queue ke spring-cloud-azure-starter-integration-storage-queue

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-starter-integration-storage-queue dari versi 2 dari azure-spring-cloud-starter-storage-queue.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan konfigurasi SDK

Semua nama properti konfigurasi mengubah awalan dari spring.cloud.azure.storage menjadi spring.cloud.azure.storage.queue.

Tabel berikut ini memperlihatkan pemetaan properti dari azure-spring-cloud-starter-storage-queue ke spring-cloud-azure-starter-integration-storage-queue:

Properti warisan Properti modern
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

Perubahan API

  • Hilangkan StorageQueueOperation dan berikan StorageQueueTemplate sebagai gantinya.
  • Hilangkan konfigurasi checkpoint-mode di StorageQueueTemplate, hanya mendukung mode MANUAL.

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-cloud-starter-storage-queue ke spring-cloud-azure-starter-integration-storage-queue.

Kelas warisan Kelas modern
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

Dari azure-spring-integration-storage-queue ke spring-integration-azure-storage-queue

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-integration-azure-storage-queue dari versi 2 dari azure-spring-integration-storage-queue.

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.

Perubahan API

  • Hilangkan StorageQueueOperation dan berikan StorageQueueTemplate sebagai gantinya.
  • Hilangkan konfigurasi checkpoint-mode di StorageQueueTemplate, hanya mendukung mode MANUAL.

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-integration-storage-queue ke spring-integration-azure-storage-queue.

Kelas warisan Kelas modern
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

Dari azure-spring-cloud-stream-binder-eventhubs ke spring-cloud-azure-stream-binder-eventhubs

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-stream-binder-eventhubs dari versi 2 dari azure-spring-cloud-stream-binder-eventhubs.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan konfigurasi SDK

Penting

Awalan konfigurasi telah diubah dari spring.cloud.azure.eventhub ke spring.cloud.azure.eventhubs.

Penting

Jenis pengikat diganti namanya dari: eventhub menjadi eventhubs.

Untuk perubahan entri anak untuk awalan berikut, lihat tabel berikut ini.

Tabel berikut ini memperlihatkan pemetaan properti dari azure-spring-cloud-stream-binder-eventhubs ke spring-cloud-azure-stream-binder-eventhubs:

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

Nota

Jenis nilai konfigurasi start-position juga diubah dari enum com.azure.spring.integration.core.api.StartPosition menjadi mapStartPositionProperties untuk setiap partisi. Dengan demikian, kuncinya adalah ID partisi, dan nilainya adalah com.azure.spring.cloud.service.eventhubs.properties.StartPositionProperties yang mencakup properti offset, nomor urutan, waktu tanggal antrean, dan apakah inklusif.

Contoh migrasi konfigurasi

Untuk menggunakan string koneksi untuk autentikasi dan memigrasikan properti yang disebutkan di atas, perubahan konfigurasi dicantumkan sebagai berikut:

Konfigurasi warisan:

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

Konfigurasi modern:

spring:
  cloud:
    azure:
      eventhubs:
        connection-string: ${AZURE_EVENTHUBS_CONNECTION_STRING}
        processor:
          checkpoint-store:
            container-name: ${AZURE_STORAGE_CONTAINER_NAME}
            account-name:  ${AZURE_STORAGE_ACCOUNT_NAME}
            account-key: ${AZURE_STORAGE_ACCOUNT_KEY}
    stream:
      eventhubs:
        bindings:
          <binding-name>:
            consumer:
              batch:
                max-size: ${AZURE_MAX_BATCH_SIZE}
                max-wait-time: ${AZURE_MAX_WAIT_TIME}
              checkpoint:
                mode: ${AZURE_CHECKPOINT_MODE}
                count: ${AZURE_CHECKPOINT_COUNT}
                interval: ${AZURE_CHECKPOINT_INTERVAL}
              initial-partition-event-position:
                0:
                  offset: earliest
                1:
                  sequence-number: 100
                2:
                  enqueued-date-time: 2022-01-12T13:32:47.650005Z
                4:
                  inclusive: false

Nota

Microsoft merekomendasikan penggunaan alur autentikasi paling aman yang tersedia. Alur autentikasi yang dijelaskan dalam prosedur ini, seperti untuk database, cache, olahpesan, atau layanan AI, memerlukan tingkat kepercayaan yang sangat tinggi dalam aplikasi dan membawa risiko yang tidak ada dalam alur lain. Gunakan alur ini hanya ketika opsi yang lebih aman, seperti identitas terkelola untuk koneksi tanpa kata sandi atau tanpa kunci, tidak layak. Untuk operasi komputer lokal, lebih suka identitas pengguna untuk koneksi tanpa kata sandi atau tanpa kunci.

Jika Anda menggunakan prinsip keamanan alih-alih string koneksi, dalam versi sebelum 4.0 aplikasi pertama-tama akan terhubung ke Azure Resource Manager (ARM) dengan prinsip keamanan yang disediakan, lalu mengambil string koneksi namespace yang ditentukan dengan ARM. Pada akhirnya aplikasi menggunakan string koneksi yang diambil untuk terhubung ke Azure Event Hubs. Dengan cara ini, prinsip keamanan yang disediakan harus diberikan dengan peran Contributor untuk mengambil namespace Azure Event Hubs terkait.

Untuk Azure Spring Apps 4.0, kami menyediakan dua cara untuk memanfaatkan prinsip keamanan untuk autentikasi. Seseorang masih menggunakan prinsipal untuk terhubung ke ARM dan mengambil string koneksi di mana peran Contributor diperlukan untuk prinsipal. Yang lain memanfaatkan prinsip keamanan untuk mengautentikasi ke Microsoft Entra ID dan kemudian terhubung ke Azure Event Hubs secara langsung. Dalam hal ini, peran Contributor tidak diperlukan lagi, sementara peran terkait Data lainnya diperlukan untuk operasi olahpesan. Untuk memastikan prinsip keamanan telah diberikan izin yang memadai untuk mengakses sumber daya Azure, lihat Authorize akses dengan Microsoft Entra ID.

Untuk autentikasi berdasarkan ARM, mengambil perwakilan layanan sebagai contoh, migrasi konfigurasi tercantum sebagai berikut, di mana peran yang ditetapkan tidak boleh berubah:

Konfigurasi warisan:

spring:
  cloud:
    azure:
      client-id: ${AZURE_CLIENT_ID}
      client-secret: ${AZURE_CLIENT_SECRET}
      tenant-id: <tenant>
      resource-group: ${EVENTHUB_RESOURCE_GROUP}
      eventhub:
        namespace: ${EVENTHUB_NAMESPACE}

Nota

Nilai yang diizinkan untuk tenant-id adalah: common, organizations, consumers, atau ID penyewa. Untuk informasi selengkapnya tentang nilai ini, lihat bagian Menggunakan endpoint yang salah (akun pribadi dan organisasi) dalam Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat aplikasi penyewa tunggal Convert ke multitenant pada Microsoft Entra ID.

Konfigurasi modern, properti untuk ID langganan Azure dan grup sumber daya diperlukan:

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

Nota

Nilai yang diizinkan untuk tenant-id adalah: common, organizations, consumers, atau ID penyewa. Untuk informasi selengkapnya tentang nilai ini, lihat bagian Menggunakan endpoint yang salah (akun pribadi dan organisasi) dalam Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat aplikasi penyewa tunggal Convert ke multitenant pada Microsoft Entra ID.

Anda juga dapat bermigrasi untuk mengautentikasi dan mengotorisasi dengan Microsoft Entra ID secara langsung tanpa melakukan memutar ke ARM. Pastikan untuk memberikan peran Data yang diperlukan perwakilan keamanan untuk operasi olahpesan. Contoh konfigurasi perwakilan layanan dan identitas terkelola tercantum sebagai berikut:

  • Dengan perwakilan layanan

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

Nota

Nilai yang diizinkan untuk tenant-id adalah: common, organizations, consumers, atau ID penyewa. Untuk informasi selengkapnya tentang nilai ini, lihat bagian Menggunakan endpoint yang salah (akun pribadi dan organisasi) dalam Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat aplikasi penyewa tunggal Convert ke multitenant pada Microsoft Entra ID.

  • Dengan identitas terkelola

    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}
    

Perubahan API

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-cloud-stream-binder-eventhubs ke spring-cloud-azure-stream-binder-eventhubs.

Kelas warisan Kelas modern
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

Dari azure-spring-cloud-stream-binder-servicebus-* ke spring-cloud-azure-stream-binder-servicebus

Panduan ini dimaksudkan untuk membantu dalam migrasi ke spring-cloud-azure-stream-binder-servicebus dari versi 2 atau azure-spring-cloud-stream-binder-servicebus-queueazure-spring-cloud-stream-binder-servicebus-topic.

Untuk informasi umum, gunakan tautan berikut:

  • Untuk gambaran umum perubahan di 4.0, lihat bagian Pengenalan dan Migrasi.
  • Untuk mempelajari selengkapnya tentang perubahan strategi dalam penamaan proyek, lihat bagian perubahan penamaan .
  • Untuk mempelajari cara menggunakan satu BOM untuk semua pustaka Azure Spring Cloud, lihat bagian BOM.
  • Untuk mempelajari cara menangani autentikasi di Spring Cloud Azure 4.0, lihat bagian perubahan Autentikasi.
  • Untuk mempelajari cara memanfaatkan spring-boot-properties-migrator selama migrasi, lihat bagian Mengonfigurasi setiap SDK.
  • Untuk mempelajari selengkapnya tentang perubahan konfigurasi global dan umum, lihat bagian konfigurasi global .

Perubahan konfigurasi SDK

Penting

Libaries binder warisan azure-spring-cloud-stream-binder-servicebus-queue dan azure-spring-cloud-stream-binder-servicebus-topic, dan sekarang mereka digabungkan menjadi satu spring-cloud-azure-stream-binder-servicebus.

Penting

Jenis pengikat digabungkan dari servicebus-queue dan servicebus-topic sebagai servicebus.

Tabel berikut mencantumkan properti konfigurasi baru spring-cloud-azure-stream-binder-servicebus:

Properti modern Deskripsi
spring.cloud.stream.servicebus.bindings.binding-name.producer.entity-type Jika Anda menggunakan fungsi pengiriman, Anda perlu mengatur jenis entitas, yang dapat Anda atur ke topik atau antrean.

Tabel berikut ini memperlihatkan pemetaan properti dari azure-spring-cloud-stream-binder-servicebus-* ke spring-cloud-azure-stream-binder-servicebus:

Properti warisan Properti modern
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-retriesatau spring.cloud.azure.servicebus.retry.fixed.max-retries, harus dikonfigurasi tergantung padaspring.cloud.azure.servicebus.retry.mode = fixed atauexponential
spring.cloud.azure.servicebus.retry-options.delay spring.cloud.azure.servicebus.retry.exponential.base-delayatau spring.cloud.azure.servicebus.retry.fixed.delay, harus dikonfigurasi tergantung padaspring.cloud.azure.servicebus.retry.mode = fixed atauexponential
spring.cloud.azure.servicebus.retry-options.max-delay spring.cloud.azure.servicebus.retry.exponential.max-delay
spring.cloud.azure.servicebus.retry-options.try-timeout spring.cloud.azure.servicebus.retry.try-timeout
spring.cloud.stream.servicebus.queue.bindings.* spring.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.concurrency spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions / max-concurrent-calls
spring.cloud.stream.servicebus.queue.bindings.binding-name.consumer.checkpoint-mode spring.cloud.stream.servicebus.bindings.binding-name.consumer.auto-complete
spring.cloud.stream.servicebus.topic.bindings.* spring.cloud.stream.servicebus.bindings.*
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.concurrency spring.cloud.stream.servicebus.bindings.binding-name.consumer.max-concurrent-sessions / max-concurrent-calls
spring.cloud.stream.servicebus.topic.bindings.binding-name.consumer.checkpoint-mode spring.cloud.stream.servicebus.bindings.binding-name.consumer.auto-complete

Nota

Properti konkurensi akan digantikan oleh maxConcurrentSessions ketika sessionsEnabled true dan maxConcurrentCalls ketika sessionsEnabled false.

Nota

Mengaktifkan auto-complete sama dengan mode titik pemeriksaan RECORD, dan sebaliknya mode MANUAL.

Contoh migrasi konfigurasi

Konfigurasi warisan, mengambil antrean sebagai contoh:

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

Konfigurasi modern:

spring:
  cloud:
    azure:
      servicebus:
        connection-string: ${AZURE_SERVICEBUS_BINDER_CONNECTION_STRING}
    stream:
      function:
        definition: consume;supply
      bindings:
        consume-in-0:
          destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
        supply-out-0:
          destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
      servicebus:
        bindings:
          consume-in-0:
            consumer:
              auto-complete: false
          supply-out-0:
            producer:
              entity-type: queue #set as topic if needed

Nota

Microsoft merekomendasikan penggunaan alur autentikasi paling aman yang tersedia. Alur autentikasi yang dijelaskan dalam prosedur ini, seperti untuk database, cache, olahpesan, atau layanan AI, memerlukan tingkat kepercayaan yang sangat tinggi dalam aplikasi dan membawa risiko yang tidak ada dalam alur lain. Gunakan alur ini hanya ketika opsi yang lebih aman, seperti identitas terkelola untuk koneksi tanpa kata sandi atau tanpa kunci, tidak layak. Untuk operasi komputer lokal, lebih suka identitas pengguna untuk koneksi tanpa kata sandi atau tanpa kunci.

Jika Anda menggunakan prinsip keamanan alih-alih string koneksi, dalam versi sebelum 4.0 aplikasi pertama-tama akan terhubung ke Azure Resource Manager (ARM) dengan prinsip keamanan yang disediakan, lalu mengambil string koneksi namespace yang ditentukan dengan ARM. Pada akhirnya aplikasi menggunakan string koneksi yang diambil untuk terhubung ke Azure Service Bus. Dengan cara ini, prinsip keamanan yang disediakan harus diberikan dengan peran Contributor untuk mengambil namespace Azure Service Bus terkait.

Untuk Azure Spring Apps 4.0, kami menyediakan dua cara untuk memanfaatkan prinsip keamanan untuk autentikasi. Seseorang masih menggunakan prinsipal untuk terhubung ke ARM dan mengambil string koneksi di mana peran Contributor diperlukan untuk prinsipal. Yang lain memanfaatkan prinsip keamanan untuk mengautentikasi ke Microsoft Entra ID dan kemudian terhubung ke Azure Service Bus secara langsung. Dalam hal ini, peran Contributor tidak diperlukan lagi, sementara peran terkait Data lainnya diperlukan untuk operasi olahpesan. Untuk memastikan prinsip keamanan telah diberikan izin yang memadai untuk mengakses sumber daya Azure, lihat Authorize akses dengan Microsoft Entra ID.

Untuk autentikasi berdasarkan ARM, mengambil perwakilan layanan sebagai contoh, migrasi konfigurasi tercantum sebagai berikut, di mana peran yang ditetapkan tidak boleh berubah:

Konfigurasi warisan:

spring:
  cloud:
    azure:
      client-id: ${AZURE_CLIENT_ID}
      client-secret: ${AZURE_CLIENT_SECRET}
      tenant-id: <tenant>
      resource-group: ${SERVICEBUS_RESOURCE_GROUP}
      servicebus:
        namespace: ${SERVICEBUS_NAMESPACE}

Nota

Nilai yang diizinkan untuk tenant-id adalah: common, organizations, consumers, atau ID penyewa. Untuk informasi selengkapnya tentang nilai ini, lihat bagian Menggunakan endpoint yang salah (akun pribadi dan organisasi) dalam Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat aplikasi penyewa tunggal Convert ke multitenant pada Microsoft Entra ID.

Konfigurasi modern, properti untuk ID langganan Azure dan grup sumber daya diperlukan:

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

Nota

Nilai yang diizinkan untuk tenant-id adalah: common, organizations, consumers, atau ID penyewa. Untuk informasi selengkapnya tentang nilai ini, lihat bagian Menggunakan endpoint yang salah (akun pribadi dan organisasi) dalam Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat aplikasi penyewa tunggal Convert ke multitenant pada Microsoft Entra ID.

Anda juga dapat bermigrasi untuk mengautentikasi dan mengotorisasi dengan Microsoft Entra ID secara langsung tanpa melakukan memutar ke ARM. Pastikan untuk memberikan peran Data yang diperlukan perwakilan keamanan untuk operasi olahpesan. Contoh konfigurasi perwakilan layanan dan identitas terkelola tercantum sebagai berikut:

  • Dengan perwakilan layanan

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

Nota

Nilai yang diizinkan untuk tenant-id adalah: common, organizations, consumers, atau ID penyewa. Untuk informasi selengkapnya tentang nilai ini, lihat bagian Menggunakan endpoint yang salah (akun pribadi dan organisasi) dalam Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat aplikasi penyewa tunggal Convert ke multitenant pada Microsoft Entra ID.

  • Dengan identitas terkelola

    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}
    

Perubahan API

  • Jatuhkan header pesan AzureHeaders.RAW_ID. Gunakan ServiceBusMessageHeaders.MESSAGE_ID sebagai gantinya.

Tabel berikut ini memperlihatkan pemetaan kelas dari azure-spring-cloud-stream-binder-eventhubs ke spring-cloud-azure-stream-binder-eventhubs.

Kelas warisan Kelas modern
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

Pustaka com.azure.spring:azure-spring-cloud-messaging belum siap untuk 4.0. Fungsi anotasi pendengar sedang didesain ulang, sehingga anotasi @AzureMessageListener, @AzureMessageListeners, dan @EnableAzureMessaging saat ini tidak didukung.