Aracılığıyla paylaş


Öğretici: Go konsol uygulamasında dinamik yapılandırma yenilemesini etkinleştirme

Bu hızlı başlangıçta, Azure Uygulama Yapılandırması'ndan yapılandırmayı dinamik olarak yenilemek için temel bir Go konsol uygulamasını geliştireceksiniz. Bu, uygulamanızın yeniden başlatma gerektirmeden yapılandırma değişikliklerini almasını sağlar.

Önkoşullar

Uygulama Yapılandırması'dan verileri yeniden yükleme

  1. appconfig.go dosyasını açın. loadAzureAppConfiguration işlevinin içinde options öğesini güncelleştirin ve yenilemeyi etkinleştirin. Go sağlayıcısı, seçilen anahtar değerlerinden herhangi birinde ( Config ile başlayan ve etiketi olmayanlar) bir değişiklik algıladıkça tüm yapılandırmayı yeniden yükler. Yapılandırma değişikliklerini izleme hakkında daha fazla bilgi için bkz. Yapılandırma yenileme için en iyi yöntemler.

    options := &azureappconfiguration.Options{
        Selectors: []azureappconfiguration.Selector{
            {
                KeyFilter: "Config.*",
            },
        },
        TrimKeyPrefixes: []string{"Config."},
        RefreshOptions: azureappconfiguration.KeyValueRefreshOptions{
            Enabled:  true,
        },
    }
    

    Tavsiye

    Interval özelliğini, RefreshOptions'nin yapılandırma yenilemeleri arasındaki en düşük süreyi belirtmek için ayarlayabilirsiniz. Bu örnekte varsayılan 30 saniye değerini kullanırsınız. Uygulama Yapılandırması deponuza yapılan istek sayısını azaltmanız gerekiyorsa daha yüksek bir değere ayarlayın.

  2. Dosyasını main.go açın ve ana işlevinize aşağıdaki kodu ekleyin:

    // Existing code in main.go
    // ... ...
     fmt.Println("\nRaw JSON Configuration:")
     fmt.Println("------------------------")
     fmt.Println(string(jsonBytes))
    
    // Register refresh callback to update the configuration
     provider.OnRefreshSuccess(func() {
     	var updatedConfig Config
     	// Re-unmarshal the configuration
     	err := provider.Unmarshal(&updatedConfig, nil)
     	if err != nil {
     		log.Printf("Error unmarshalling updated configuration: %s", err)
     		return
     	}
    
     	fmt.Printf("Message: %s\n", updatedConfig.Message)
     })
    
    // Setup a channel to listen for termination signals
    done := make(chan os.Signal, 1)
    signal.Notify(done, syscall.SIGINT, syscall.SIGTERM)
    
    fmt.Println("\nWaiting for configuration changes...")
    fmt.Println("(Update values in Azure App Configuration to see refresh in action)")
    fmt.Println("Press Ctrl+C to exit")
    
    // Start a ticker to periodically trigger refresh
    ticker := time.NewTicker(30 * time.Second)
    defer ticker.Stop()
    
    // Keep the application running until terminated
    for {
        select {
        case <-ticker.C:
            // Trigger refresh in background
            go func() {
                ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
                defer cancel()
    
                if err := provider.Refresh(ctx); err != nil {
                    log.Printf("Error refreshing configuration: %s", err)
                }
            }()
        case <-done:
            fmt.Println("\nExiting...")
            return
        }
    }
    

Uygulamayı çalıştırma

  1. Uygulamanızı çalıştırın:

     go mod tidy
     go run .
    
  2. Uygulamayı çalışır durumda tutun.

  3. Uygulama Yapılandırma deponuza gidin ve anahtarın değerini güncelleştirin Config.Message .

    Anahtar Değer İçerik türü
    Config.Message Merhaba Dünya - güncelleştirildi! Boş bırakın
  4. Konsol uygulamanızı gözlemleyin- 30 saniye içinde değişikliği algılar ve güncelleştirilmiş yapılandırmayı görüntüler.

Kaynakları temizle

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

Önemli

Bir kaynak grubunu silmek 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 seçeneğini 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.