このクイック スタートでは、基本的な Go コンソール アプリケーションを強化して、Azure App Configuration から構成を動的に更新します。 これにより、アプリケーションは再起動を必要とせずに構成の変更を取得できます。
[前提条件]
App Configuration からデータを再度読み込む
ファイル
appconfig.go
を開きます。loadAzureAppConfiguration
関数内で、options
を更新して更新を有効にします。 Go プロバイダーは、選択したキー値 ( Config で始まりラベルがない値) の変更を検出するたびに、構成全体を再読み込みします。 構成の変更の監視の詳細については、「 構成の更新のベスト プラクティス」を参照してください。options := &azureappconfiguration.Options{ Selectors: []azureappconfiguration.Selector{ { KeyFilter: "Config.*", }, }, TrimKeyPrefixes: []string{"Config."}, RefreshOptions: azureappconfiguration.KeyValueRefreshOptions{ Enabled: true, }, }
ヒント
Interval
のRefreshOptions
プロパティを設定して、構成の更新間隔の最小時間を指定できます。 今回の例では既定の値である 30 秒を使用します。 App Configuration ストアに対する要求の数を減らす必要がある場合は、より大きな値に調整します。ファイル
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 } }
アプリケーションを実行する
アプリケーションを実行します。
go run unmarshal_sample.go
アプリケーションを実行したままにします。
App Configuration ストアに移動し、
Config.Message
キーの値を更新します。鍵 価値 コンテンツの種類 Config.Message Hello World - 更新されました。 空のままにします コンソール アプリケーションを観察します。30 秒以内に変更が検出され、更新された構成が表示されます。
リソースをクリーンアップする
この記事で作成したリソースを継続して使用しない場合は、ここで作成したリソース グループを削除して課金されないようにしてください。
Von Bedeutung
リソース グループを削除すると、元に戻すことができません。 リソース グループとそのすべてのリソースは完全に削除されます。 間違ったリソース グループやリソースをうっかり削除しないようにしてください。 この記事のリソースを、保持したい他のリソースを含むリソース グループ内に作成した場合は、リソース グループを削除する代わりに、各リソースをそれぞれのペインから個別に削除します。
- Azure portal にサインインし、 [リソース グループ] を選択します。
- [名前でフィルター] ボックスにリソース グループの名前を入力します。
- 結果一覧でリソース グループ名を選択し、概要を表示します。
- [リソース グループの削除] を選択します。
- リソース グループの削除の確認を求めるメッセージが表示されます。 確認のためにリソース グループの名前を入力し、 [削除] を選択します。
しばらくすると、リソース グループとそのすべてのリソースが削除されます。