이 빠른 시작에서는 Azure App Configuration에서 구성을 동적으로 새로 고치도록 기본 Go 콘솔 애플리케이션을 향상시킵니다. 이렇게 하면 애플리케이션이 다시 시작하지 않고도 구성 변경 내용을 선택할 수 있습니다.
필수 조건
- 빠른 시작 완료: 이 빠른 시작의 시작점으로 Azure App Configuration을 사용하여 Go 콘솔 앱 만들기
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
열고 주 함수에 다음 코드를 추가합니다.// 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초 이내에 변경 내용을 감지하고 업데이트된 구성을 표시해야 합니다.
자원을 정리하세요
이 문서에서 만든 리소스를 계속 사용하지 않으려면 여기서 만든 리소스 그룹을 삭제하여 요금이 부과되지 않도록 합니다.
중요합니다
리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹 및 포함된 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 합니다. 유지하려는 다른 리소스가 포함된 리소스 그룹 내에서 이 문서에 대한 리소스를 만든 경우 리소스 그룹을 삭제하는 대신 해당 창에서 각 리소스를 개별적으로 삭제합니다.
- Azure Portal에 로그인하고 리소스 그룹을 선택합니다.
- 이름으로 필터링 상자에서 리소스 그룹의 이름을 입력합니다.
- 결과 목록에서 리소스 그룹 이름을 선택하여 개요를 확인합니다.
- 리소스 그룹 삭제를 선택합니다.
- 리소스 그룹 삭제를 확인하는 메시지가 표시됩니다. 리소스 그룹의 이름을 입력하여 확인하고 삭제를 선택합니다.
잠시 후, 리소스 그룹 및 모든 해당 리소스가 삭제됩니다.