Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku pokazano, jak wdrożyć dynamiczne aktualizacje konfiguracji w aplikacji internetowej Gin przy użyciu usługi Azure App Configuration. Jest ona oparta na aplikacji internetowej wprowadzonej w poprzednim przewodniku Szybki start.
Wymagania wstępne
Zakończ Szybki start: Utwórz aplikację webową Gin za pomocą usługi Azure App Configuration
Ponowne ładowanie danych z usługi App Configuration
Otwórz plik
appconfig.go
. Wewnątrz funkcjiloadAzureAppConfiguration
, zaktualizujoptions
, aby włączyć odświeżanie. Dostawca języka Go ponownie załaduje całą konfigurację za każdym razem, gdy wykryje zmianę w dowolnej z wybranych wartości klucza. Aby uzyskać więcej informacji na temat monitorowania zmian konfiguracji, zobacz Najlepsze rozwiązania dotyczące odświeżania konfiguracji.options := &azureappconfiguration.Options{ Selectors: []azureappconfiguration.Selector{ { KeyFilter: "Config.*", }, }, TrimKeyPrefixes: []string{"Config."}, RefreshOptions: azureappconfiguration.KeyValueRefreshOptions{ Enabled: true, }, }
Wskazówka
Można ustawić właściwość
Interval
elementuRefreshOptions
, aby określić minimalny czas między odświeżeniami konfiguracji. W tym przykładzie użyjesz wartości domyślnej 30 sekund. Dostosuj do wyższej wartości, jeśli musisz zmniejszyć liczbę żądań wysyłanych do magazynu usługi App Configuration.main.go
Zaktualizuj plik, aby zarejestrować funkcję wywołania zwrotnego na potrzeby aktualizacji konfiguracji:// Existing code // ... ... var config Config if err := provider.Unmarshal(&config, nil); err != nil { log.Fatalf("Failed to unmarshal configuration: %v", err) } // Register refresh callback provider.OnRefreshSuccess(func() { // Re-unmarshal the configuration err := provider.Unmarshal(&config, nil) if err != nil { log.Printf("Failed to unmarshal updated configuration: %s", err) return } })
Dodaj middleware do odświeżania konfiguracji. Zaktualizuj
main.go
za pomocą następującego kodu.func configRefreshMiddleware(provider *azureappconfiguration.AzureAppConfiguration) gin.HandlerFunc { return func(c *gin.Context) { // Start refresh in a goroutine to avoid blocking the request go func() { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() if err := provider.Refresh(ctx); err != nil { log.Printf("Error refreshing configuration: %s", err) } }() c.Next() } }
Użyj oprogramowania pośredniczącego do odświeżania konfiguracji
// Existing code // ... ... router := gin.Default() // Use the configuration refresh middleware router.Use(configRefreshMiddleware(provider)) // The rest of existing code //... ...
Odświeżanie konfiguracji opartej na żądaniach
Odświeżanie konfiguracji jest wyzwalane przez przychodzące żądania do aplikacji internetowej. W przypadku bezczynności aplikacji nie zostanie wykonane żadne odświeżanie. Gdy aplikacja jest aktywna, oprogramowanie pośredniczące monitorujące odświeżanie konfiguracji śledzi wybrane przez Ciebie wartości kluczy skonfigurowane w azureappconfiguration.Options
. Oprogramowanie pośredniczące jest wyzwalane po każdym żądaniu przychodzącym do aplikacji. Jednak oprogramowanie pośredniczące będzie wysyłać żądania tylko w celu sprawdzenia wartości w usłudze App Configuration po upływie ustawionego interwału odświeżania.
- Jeśli żądanie do usługi App Configuration dotyczące wykrywania zmian nie powiedzie się, aplikacja będzie nadal używać buforowanej konfiguracji. Nowe próby sprawdzenia zmian będą podejmowane okresowo, gdy do aplikacji będą napływać nowe żądania.
- Odświeżanie konfiguracji odbywa się równolegle z procesem przetwarzania żądań przychodzących aplikacji. Nie spowoduje to zablokowania ani spowolnienia żądania przychodzącego, które wyzwoliło odświeżanie. Żądanie, które wyzwoliło odświeżanie, może nie uzyskać zaktualizowanych wartości konfiguracji, ale późniejsze żądania otrzymają nowe wartości konfiguracji.
- Aby upewnić się, że oprogramowanie pośredniczące zostało wyzwolone, umieść oprogramowanie pośredniczące do odświeżania konfiguracji na jak najwcześniejszym etapie w potoku żądania, aby inne oprogramowanie pośredniczące nie mogło go pominąć w aplikacji.
Uruchamianie aplikacji internetowej
Po skonfigurowaniu dynamicznego odświeżania konfiguracji przetestujmy ją, aby zobaczyć ją w działaniu.
Uruchom aplikację.
go run main.go
Otwórz przeglądarkę internetową i przejdź do
http://localhost:8080
aby uzyskać dostęp do swojej aplikacji. Strona internetowa wygląda następująco:Przejdź do swojego sklepu App Configuration i zaktualizuj wartość klucza
Config.Message
.Klawisz Wartość Typ zawartości Config.Message Witaj z usługi Azure App Configuration — teraz z aktualizacjami na żywo! Pozostaw pole puste Po odświeżeniu przeglądarki kilka razy zobaczysz zaktualizowaną zawartość po zaktualizowaniu obiektu ConfigMap w ciągu 30 sekund.
Uprzątnij zasoby
Jeśli nie chcesz nadal korzystać z zasobów utworzonych w tym artykule, usuń utworzoną tutaj grupę zasobów, aby uniknąć naliczania opłat.
Ważne
Usunięcie grupy zasobów jest nieodwracalne. Grupa zasobów i wszystkie zasoby w niej są trwale usuwane. Upewnij się, że nie usuniesz przypadkowo niewłaściwej grupy zasobów lub zasobów. Jeśli zasoby dla tego artykułu zostały utworzone w grupie zasobów zawierającej inne zasoby, które chcesz zachować, usuń każdy zasób oddzielnie z odpowiedniego okienka zamiast usuwać grupę zasobów.
- Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
- W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
- Na liście wyników wybierz nazwę grupy zasobów, aby wyświetlić przegląd.
- Wybierz pozycję Usuń grupę zasobów.
- Poproszono Cię o potwierdzenie usunięcia grupy zasobów. Wprowadź nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.
Po kilku chwilach grupa zasobów i wszystkie jej zasoby zostaną usunięte.