Aracılığıyla paylaş


Öğretici: Java Spring uygulamasında anında iletme yenileme kullanarak dinamik yapılandırma kullanma

Uygulama Yapılandırması Java Spring istemci kitaplığı, bir uygulamanın yeniden başlatılmasına neden olmadan yapılandırmanın isteğe bağlı olarak güncelleştirilmesini destekler. Bir uygulama, aşağıdaki iki yaklaşımdan biri veya her ikisi kullanılarak Uygulama Yapılandırması değişiklikleri algılamak için yapılandırılabilir.

  • Yoklama Modeli: Bu, yapılandırmadaki değişiklikleri algılamak için yoklama kullanan varsayılan davranıştır. Bir ayarın önbelleğe alınmış değeri sona erdikten sonra sonraki çağrısıAppConfigurationRefreshrefreshConfigurations, yapılandırmanın değişip değişmediğini denetlemek için sunucuya bir istek gönderir ve gerekirse güncelleştirilmiş yapılandırmayı çeker.

  • Gönderme Modeli: Bu, yapılandırmadaki değişiklikleri algılamak için Uygulama Yapılandırması olayları kullanır. Uygulama Yapılandırması, Web Kancası ile Event Grid ile anahtar değer değişikliği olaylarını gönderecek şekilde ayarlandıktan sonra, uygulama yapılandırmayı güncel tutmak için gereken toplam istek sayısını iyileştirmek için bu olayları kullanabilir.

Bu öğreticide, anında yenilemeyi kullanarak kodunuzda dinamik yapılandırma güncelleştirmelerini nasıl uygulayabileceğiniz gösterilmektedir. Hızlı başlangıçlarda tanıtılan uygulamayı temel alır. Devam etmeden önce Uygulama Yapılandırması ile Java Spring uygulaması oluşturma işlemini tamamlayın.

Bu öğreticideki adımları gerçekleştirmek için herhangi bir kod düzenleyicisini kullanabilirsiniz. Visual Studio Code , Windows, macOS ve Linux platformlarında kullanılabilen mükemmel bir seçenektir.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Yapılandırma değişikliği olaylarını Uygulama Yapılandırması web kancasına göndermek için bir abonelik ayarlama
  • Spring Boot uygulamasını App Service'e dağıtma
  • Java Spring uygulamanızı, Uygulama Yapılandırması'daki değişikliklere yanıt olarak yapılandırmasını güncelleştirecek şekilde ayarlayın.
  • Uygulamanızda en son yapılandırmayı kullanma.

Önkoşullar

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Anında İletme Yenileme kurulumu

  1. pom.xml dosyasını açın ve dosyayı aşağıdaki bağımlılıklarla güncelleştirin.

    <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. Uygulamanın Maven aracılığıyla Azure Uygulaması Hizmeti'ne dağıtılabilmesi için Maven App Service Dağıtımı'nı ayarlayın.

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.5.0:config
    
  3. bootstrap.properties dosyasını açın ve yapılandırma anında iletme yenilemesi Azure Uygulaması yapılandırın.

    # 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
    

Olası azaltmayı azaltmak için önbelleğe alınan değer kirli olarak işaretlenmeden önce rastgele bir gecikme eklenir. Önbelleğe alınan değer kirli olarak işaretlenmeden önce varsayılan en uzun gecikme süresi 30 saniyedir.

Not

Birincil belirteç adı Uygulama Yapılandırması anahtar olarak depolanmalıdır ve ardından Birincil belirteç gizli dizisi ek güvenlik için Uygulama Yapılandırması Anahtar Kasası Başvurusu olarak depolanmalıdır.

App Service'te uygulamayı derleme ve çalıştırma

Event Grid Web Kancaları oluşturma işleminde doğrulama gerektirir. Bu kılavuzu izleyerek veya uygulamanızı önceden yapılandırılmış Azure Uygulaması Yapılandırma Spring Web Kitaplığı ile başlatarak doğrulayabilirsiniz. Bu, uygulamanızı sizin yerinize kaydeder. Olay aboneliği kullanmak için sonraki iki bölümdeki adımları izleyin.

  1. Ortam değişkenini Uygulama Yapılandırması örneğinizin bağlantı dizesi ayarlayın:

    setx AppConfigurationConnectionString <connection-string-of-your-app-configuration-store>
    
  2. öğesinin altındaki öğesini pom.xml güncelleştirin configurationazure-webapp-maven-plugin

    <appSettings>
      <AppConfigurationConnectionString>${AppConfigurationConnectionString}</AppConfigurationConnectionString>
    </appSettings>
    
  3. Konsol uygulamasını oluşturmak için aşağıdaki komutu çalıştırın:

     mvn package
    
  4. Derleme başarıyla tamamlandıktan sonra aşağıdaki komutu çalıştırarak uygulamayı yerel olarak çalıştırın:

    mvn azure-webapp:deploy
    

Olay aboneliği ayarlama

  1. Azure portalında Uygulama Yapılandırması kaynağını açın ve bölmede Events öğesine tıklayın+ Event Subscription.

    The events pane has an option to create new Subscriptions.

  2. ve System Topiciçin Event Subscription bir ad girin. Varsayılan olarak Olay Türleri Anahtar-Değer değiştirildi ve Anahtar-Değer silindi olarak ayarlanır; bu, Anında İletme Olayının tam nedenlerini seçmek için Filtreler sekmesinin kullanılmasıyla birlikte değiştirilebilir.

    Events require a name, topic, and filters.

  3. olarak Web Hooköğesini Endpoint Type seçin, öğesini seçinSelect an endpoint.

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

  4. Uç nokta, uygulamanın URI'sıdır + "/actuator/appconfiguration-refresh? {your-token-name}={your-token-secret}". Örneğin https://my-azure-webapp.azurewebsites.net/actuator/appconfiguration-refresh?myToken=myTokenSecret

  5. Create Olay aboneliğini oluşturmak için öğesine tıklayın. Create Seçildiğinde, Web Kancası için bir kayıt isteği uygulamanıza gönderilir. Bu, Azure Uygulaması Yapılandırması istemci kitaplığı tarafından doğrulanır ve geçerli bir yanıt döndürür.

  6. Event Subscriptions Aboneliğin Events başarıyla oluşturulduğunu doğrulamak için bölmeye tıklayın.

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

Not

Yapılandırma değişikliklerine abone olurken, uygulamanıza gönderilen olay sayısını azaltmak için bir veya daha fazla filtre kullanılabilir. Bunlar Event Grid abonelik filtreleri olarak yapılandırılabilir. Örneğin, abonelik filtresi yalnızca belirli bir dizeyle başlayan bir anahtardaki değişiklikler için olaylara abone olmak için kullanılabilir.

Not

Uygulamanızın birden çok örneği çalışıyorsa, yapılandırmalarını yenilemek için uygulamanızın appconfiguration-refresh-bus tüm örneklerine ileti göndermek için kullanılan Azure Service Bus'ı ayarlamayı gerektiren uç noktayı kullanabilirsiniz. Uygulamanızın birden çok örneği çalışıyorsa ve tüm örneklerin en son yapılandırmayla güncelleştirildiğinden emin olmak istiyorsanız bu yararlı olur. Bu uç nokta, yapılandırılmış bir bağımlılığınız spring-cloud-bus olmadığı sürece kullanılamaz. Daha fazla bilgi için Azure Service Bus Spring Cloud Bus belgelerine bakın. Service Bus bağlantısının yalnızca ayarlanması gerekir ve Azure Uygulaması Yapılandırma kitaplığı iletilerin gönderilmesini ve alınmasını işler.

Uygulamayı doğrulama ve test edin

  1. Uygulamanız çalıştırıldıktan sonra curl kullanarak uygulamanızı test edin, örneğin:

    curl -X GET https://my-azure-webapp.azurewebsites.net
    
  2. Azure Portal'ı açın ve uygulamanızla ilişkilendirilmiş Uygulama Yapılandırması kaynağınıza gidin. İşlemler'in altında Yapılandırma Gezgini'ni seçin ve aşağıdaki anahtarların değerlerini güncelleştirin:

    Anahtar Değer
    application/config.message Merhaba - Güncelleştirildi
  3. Görüntülenen yeni iletiyi görmek için tarayıcı sayfasını yenileyin.

Kaynakları temizleme

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücretlerden kaçınmak için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. Bu makalenin kaynaklarını, saklamak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portalında oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Genel bir bakış görmek için sonuç listesinde kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki adımlar

Bu öğreticide Java uygulamanızın yapılandırma ayarlarını Uygulama Yapılandırması dinamik olarak yenilemesini etkinleştirmişsiniz. Daha fazla soru için başvuru belgelerine bakın; Spring Cloud Azure Uygulaması Configuration kitaplığının nasıl çalıştığıyla ilgili tüm ayrıntılara sahiptir. Azure yönetilen kimliğini kullanarak Uygulama Yapılandırması erişimini kolaylaştırmayı öğrenmek için sonraki öğreticiye geçin.