次の方法で共有


チュートリアル: Go コンソール アプリで動的構成の更新を有効にする

このクイック スタートでは、基本的な Go コンソール アプリケーションを強化して、Azure App Configuration から構成を動的に更新します。 これにより、アプリケーションは再起動を必要とせずに構成の変更を取得できます。

[前提条件]

App Configuration からデータを再度読み込む

  1. ファイル appconfig.goを開きます。 loadAzureAppConfiguration関数内で、optionsを更新して更新を有効にします。 Go プロバイダーは、選択したキー値 ( Config で始まりラベルがない値) の変更を検出するたびに、構成全体を再読み込みします。 構成の変更の監視の詳細については、「 構成の更新のベスト プラクティス」を参照してください。

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

    ヒント

    IntervalRefreshOptions プロパティを設定して、構成の更新間隔の最小時間を指定できます。 今回の例では既定の値である 30 秒を使用します。 App Configuration ストアに対する要求の数を減らす必要がある場合は、より大きな値に調整します。

  2. ファイル unmarshal_sample.go を開き、次のコードを main 関数に追加します。

    // Existing code in unmarshal_sample.go
    // ... ...
    fmt.Printf("Timeout: %d seconds\n", config.App.Settings.Timeout)
    fmt.Printf("Retry Count: %d\n", config.App.Settings.RetryCount)
    
    // Register refresh callback to update and display the configuration
    provider.OnRefreshSuccess(func() {
        // Re-unmarshal the configuration
        err := appCfgProvider.Unmarshal(&updatedConfig, nil)
        if err != nil {
            log.Printf("Error unmarshalling updated configuration: %s", err)
            return
        }
    
        // Display the updated configuration
        displayConfig(config)
    })
    
    // 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
        }
    }
    

アプリケーションを実行する

  1. アプリケーションを実行します。

    go run unmarshal_sample.go
    
  2. アプリケーションを実行したままにします。

  3. App Configuration ストアに移動し、 Config.Message キーの値を更新します。

    価値 コンテンツの種類
    Config.Message Hello World - 更新されました。 空のままにします
  4. コンソール アプリケーションを観察します。30 秒以内に変更が検出され、更新された構成が表示されます。

リソースをクリーンアップする

この記事で作成したリソースを継続して使用しない場合は、ここで作成したリソース グループを削除して課金されないようにしてください。

Von Bedeutung

リソース グループを削除すると、元に戻すことができません。 リソース グループとそのすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 この記事のリソースを、保持したい他のリソースを含むリソース グループ内に作成した場合は、リソース グループを削除する代わりに、各リソースをそれぞれのペインから個別に削除します。

  1. Azure portal にサインインし、 [リソース グループ] を選択します。
  2. [名前でフィルター] ボックスにリソース グループの名前を入力します。
  3. 結果一覧でリソース グループ名を選択し、概要を表示します。
  4. [リソース グループの削除] を選択します。
  5. リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、 [削除] を選択します。

しばらくすると、リソース グループとそのすべてのリソースが削除されます。