Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве описано, как улучшить базовое консольное приложение Go для динамического обновления конфигурации из конфигурации приложений Azure. Это позволяет приложению отслеживать изменения конфигурации без необходимости перезапуска.
Предпосылки
- Выполните краткое руководство: создание консольного приложения Go с помощью конфигурации приложений Azure в качестве отправной точки для этого выполнения
Перезагрузить данные из конфигурации приложения
Откройте файл
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 секунд. Увеличьте значение, если нужно уменьшить количество запросов к вашему хранилищу конфигурации приложений.Откройте файл
main.goи добавьте следующий код в основную функцию:// 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 } }
Запуск приложения
Запустите приложение:
go mod tidy go run .Продолжайте работу приложения.
Перейдите в хранилище конфигурации приложений и обновите значение
Config.Messageключа.Ключ Ценность Тип контента Config.Message Hello World - обновлено! Оставьте пустым Наблюдайте за консольным приложением в течение 30 секунд, оно должно обнаруживать изменения и отображать обновленную конфигурацию.
Очистите ресурсы
Если вы не планируете в дальнейшем использовать ресурсы, созданные при работе с этой статьей, удалите созданную группу ресурсов, чтобы избежать расходов.
Это важно
Удаление группы ресурсов — процесс необратимый. Группа ресурсов и все ресурсы в ней будут удалены безвозвратно. Убедитесь, что вы не удаляете случайно неправильную группу ресурсов или ресурсы. Если вы создали ресурсы для этой статьи внутри группы ресурсов, которая содержит другие ресурсы, которые вы хотите сохранить, удалите каждый ресурс индивидуально из его собственной панели, вместо того чтобы удалять группу ресурсов.
- Войдите на портал Azure и выберитеГруппы ресурсов.
- В поле Фильтр по имени введите название вашей группы ресурсов.
- В списке результатов выберите имя группы ресурсов, чтобы просмотреть общие сведения.
- Выберите команду Удалить группу ресурсов.
- Вам предлагается подтвердить удаление группы ресурсов. Введите имя вашей группы ресурсов для подтверждения и выберите Удалить.
Через несколько мгновений группа ресурсов и все ее ресурсы будут удалены.