Tutorial: Gunakan konfigurasi dinamis menggunakan refresh pendorongan di aplikasi Java Spring

Pustaka klien Java Spring App Configuration mendukung pembaruan konfigurasi sesuai permintaan tanpa menyebabkan aplikasi dihidupkan ulang. Aplikasi dapat dikonfigurasikan untuk mendeteksi perubahan di App Configuration menggunakan salah satu atau kedua pendekatan berikut.

  • Model Polling: Ini adalah perilaku default yang menggunakan polling untuk mendeteksi perubahan konfigurasi. Setelah nilai cache pengaturan kedaluwarsa, panggilan berikutnya ke AppConfigurationRefresh atau refreshConfigurations mengirim permintaan ke server untuk memeriksa apakah konfigurasi telah berubah, dan menarik konfigurasi yang diperbarui jika diperlukan.

  • Model Pendorongan: Ini menggunakan peristiwa App Configuration untuk mendeteksi perubahan konfigurasi. Setelah App Configuration disiapkan untuk mengirim peristiwa perubahan nilai kunci ke Azure Event Grid, dengan Webhook, aplikasi dapat menggunakan peristiwa ini untuk mengoptimalkan jumlah total permintaan yang diperlukan untuk menjaga konfigurasi tetap terbarukan.

Tutorial ini menunjukkan bagaimana Anda dapat menerapkan pembaruan konfigurasi dinamis dalam kode Anda menggunakan refresh pendorongan. Tutorial ini dibangun pada aplikasi web yang diperkenalkan di mulai cepat. Sebelum melanjutkan, selesaikan Membuat aplikasi Java Spring dengan Azure App Configuration terlebih dahulu.

Anda dapat menggunakan penyunting kode apa pun untuk melakukan langkah-langkah dalam tutorial ini. Visual Studio Code adalah opsi luar biasa yang tersedia di platform Windows, macOS, dan Linux.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Menyiapkan langganan untuk mengirim peristiwa perubahan konfigurasi dari Azure App Configuration ke Webhook
  • Menyebarkan aplikasi Spring Boot ke App Service
  • Siapkan aplikasi Java Spring Anda untuk memperbarui konfigurasinya sebagai respons terhadap perubahan pada App Configuration.
  • Konsumsi konfigurasi terbaru di aplikasi Anda.

Prasyarat

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Penyetelan Push Refresh

  1. Buka pom.xml dan perbarui file dengan dependensi berikut.

    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    </dependency>
    
    <!-- Adds the Ability to Push Refresh -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
            <groupId>com.azure.spring</groupId>
            <artifactId>spring-cloud-azure-dependencies</artifactId>
            <version>5.8.0</version>
            <type>pom</type>
            <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  2. Siapkan Penyebaran App Service Maven, sehingga aplikasi dapat disebarkan ke Azure App Service melalui Maven.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  3. Buka bootstrap.properties dan konfigurasikan Azure App Configuration Push Refresh.

    # Azure App Configuration Properties
    spring.cloud.azure.appconfiguration.stores[0].connection-string= ${AppConfigurationConnectionString}
    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled= true
    spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30d
    spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key= sentinel
    spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.name= myToken
    spring.cloud.azure.appconfiguration.stores[0].monitoring.push-notification.primary-token.secret= myTokenSecret
    
    management.endpoints.web.exposure.include= appconfiguration-refresh
    

Penundaan acak ditambahkan sebelum nilai cache ditandai sebagai kotor untuk mengurangi potensi pembatasan. Penundaan maksimum default sebelum nilai yang ditembolok ditandai sebagai kotor adalah 30 detik.

Catatan

Nama token Utama harus disimpan dalam App Configuration sebagai kunci, dan kemudian rahasia token Utama harus disimpan sebagai Referensi Vault Kunci App Configuration untuk keamanan tambahan.

Membangun dan menjalankan aplikasi di layanan aplikasi

Event Grid Web Hooks memerlukan validasi pada pembuatan. Anda dapat memvalidasi dengan mengikuti panduan ini atau dengan memulai aplikasi Anda dengan Azure App Configuration Spring Web Library yang sudah dikonfigurasi, yang akan mendaftarkan aplikasi Anda. Untuk menggunakan langganan peristiwa, ikuti langkah-langkah di dua bagian berikutnya.

  1. Atur variabel lingkungan ke string koneksi instans App Configuration Anda:

    setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
    
  2. Perbarui pom.xml Anda pada tambahkan configurationazure-webapp-maven-plugin

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Jalankan perintah berikut untuk membuat aplikasi konsol:

     mvn package
    
  4. Setelah pembangunan berhasil diselesaikan, jalankan perintah berikut untuk menjalankan aplikasi secara lokal:

    mvn azure-webapp:deploy
    

Menyiapkan langganan peristiwa

  1. Buka sumber daya App Configuration di portal Azure, lalu klik + Event Subscription di panel Events.

    The events pane has an option to create new Subscriptions.

  2. Masukkan nama untuk Event Subscription dan System Topic. Secara default, Nilai-Kunci Tipe Peristiwa dimodifikasi dan Nilai-Kunci yang dihapus diatur, ini dapat diubah bersama dengan menggunakan tab Filter untuk memilih alasan pasti untuk pengiriman Peristiwa Push.

    Events require a name, topic, and filters.

  3. Pilih Endpoint Type sebagai Web Hook, pilih Select an endpoint.

    Selecting Endpoint creates a new blade to enter the endpoint URI.

  4. Titik akhir adalah URI aplikasi + "/aktuator/appconfiguration-refresh? {nama-token-Anda}={your-token-secret}". Misalnya https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret

  5. Klik Create untuk membuat langganan acara. Ketika Create dipilih permintaan pendaftaran untuk Web Hook akan dikirim ke aplikasi Anda. Permintaan ini diterima oleh pustaka klien Azure App Configuration diverifikasi, dan mengembalikan respons yang valid.

  6. Klik Event Subscriptions di panel Events untuk memvalidasi bahwa langganan berhasil dibuat.

    Web Hook shows up in a table on the bottom of the page.

Catatan

Saat berlangganan perubahan konfigurasi, satu atau beberapa filter dapat digunakan untuk mengurangi jumlah peristiwa yang dikirim ke aplikasi Anda. Ini dapat dikonfigurasi baik sebagai filter langganan Event Grid. Misalnya, filter langganan hanya dapat digunakan untuk berlangganan peristiwa untuk perubahan dalam kunci yang dimulai dengan untai (karakter) tertentu.

Catatan

Jika Anda memiliki beberapa instans aplikasi yang berjalan, Anda dapat menggunakan appconfiguration-refresh-bus titik akhir yang memerlukan penyiapan Azure Bus Layanan, yang digunakan untuk mengirim pesan ke semua instans aplikasi Anda untuk merefresh konfigurasinya. Ini berguna jika Anda memiliki beberapa instans aplikasi yang berjalan dan ingin memastikan bahwa semua instans diperbarui dengan konfigurasi terbaru. Titik akhir ini tidak tersedia kecuali Anda memiliki spring-cloud-bus sebagai dependensi dengan yang dikonfigurasi. Lihat dokumentasi Azure Bus Layanan Spring Cloud Bus untuk informasi selengkapnya. Koneksi bus layanan hanya perlu disiapkan dan pustaka Azure App Configuration akan menangani pengiriman dan penerimaan pesan.

Verifikasikan dan uji aplikasi

  1. Setelah aplikasi Anda berjalan, gunakan curl untuk menguji aplikasi Anda, misalnya:

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. Buka Portal Microsoft Azure dan buka sumber daya App Configuration yang terkait dengan Aplikasi Anda. Pilih Penjelajah Konfigurasi di bawah Operasi dan perbarui nilai kunci berikut:

    Tombol Nilai
    application/config.message Halo - Diperbarui
  3. Refresh halaman browser untuk melihat pesan baru yang ditampilkan.

Membersihkan sumber daya

Jika Anda tidak ingin terus menggunakan sumber daya yang dibuat dalam artikel ini, hapus grup sumber daya yang Anda buat di sini untuk menghindari biaya.

Penting

Penghapusan grup sumber daya tidak bisa dipulihkan. Grup sumber daya dan semua sumber daya yang ada di dalamnya akan dihapus secara permanen. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat sumber daya untuk artikel ini dalam grup sumber daya yang ada yang berisi sumber daya lain yang ingin disimpan, hapus setiap sumber daya satu per satu dari panelnya masing-masing, bukan menghapus grup sumber daya.

  1. Masuk ke portal Azure, lalu pilih Grup sumber daya.
  2. Dalam kotak Filter menurut nama, masukkan nama grup sumber daya Anda.
  3. Dalam daftar hasil, pilih nama grup sumber daya untuk melihat gambaran umum.
  4. Pilih Hapus grup sumber daya.
  5. Anda akan diminta untuk mengonfirmasi penghapusan grup sumber daya. Masukkan nama grup sumber daya Anda untuk mengonfirmasi, dan pilih Hapus.

Setelah beberapa saat, grup sumber daya dan semua sumber dayanya akan dihapus.

Langkah berikutnya

Dalam tutorial ini, Anda telah mengaktifkan aplikasi Java Spring Anda untuk menyegarkan pengaturan konfigurasi dari Azure App Configuration secara dinamis. Untuk pertanyaan lebih lanjut, lihat dokumentasi referensi, dokumentasi ini berisi semua detail tentang cara kerja pustaka Spring Cloud Azure App Configuration. Untuk mempelajari cara menggunakan identitas terkelola Azure guna menyederhanakan akses ke App Configuration, lanjut ke tutorial berikutnya.