Sdílet prostřednictvím


Rychlý start: Přidání příznaků funkcí do konzolové aplikace Go

V tomto rychlém startu vytvoříte příznak funkce v Azure App Configuration a použijete ho k dynamickému řízení dostupnosti funkcí v aplikaci konzoly Go.

Podpora správy funkcí rozšiřuje funkci dynamické konfigurace v nástroji App Configuration. Tento příklad ukazuje, jak integrovat příznaky funkcí do konzolové aplikace Go s možnostmi monitorování v reálném čase.

Požadavky

Vytvořit přepínač funkce

Přidejte příznak funkce s názvem Beta do obchodu App Configuration Store a ponechte popis a popis s výchozími hodnotami. Další informace o přidání příznaků funkcí do úložiště pomocí webu Azure Portal nebo rozhraní příkazového řádku najdete v části Vytvoření příznaku funkce.

Snímek obrazovky s vytvořením příznaku funkce

Použití příznaku funkce

  1. Vytvořte nový adresář pro projekt Go a přejděte do něj:

    mkdir go-feature-flag-quickstart
    cd go-feature-flag-quickstart
    
  2. Inicializace nového modulu Go:

    go mod init go-feature-flag-quickstart
    
  3. Nainstalujte požadované balíčky Go pro azure App Configuration a správu funkcí:

    go get github.com/microsoft/Featuremanagement-Go/featuremanagement
    go get github.com/microsoft/Featuremanagement-Go/featuremanagement/providers/azappconfig
    
  4. Vytvořte soubor s názvem appconfig.go s následujícím obsahem. Ke službě App Configuration Store se můžete připojit pomocí Microsoft Entra ID (doporučeno) nebo připojovacího řetězce.

    package main
    
    import (
        "context"
        "log"
        "os"
    
        "github.com/Azure/AppConfiguration-GoProvider/azureappconfiguration"
        "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    )
    
    func loadAzureAppConfiguration(ctx context.Context) (*azureappconfiguration.AzureAppConfiguration, error) {
        // Get the endpoint from environment variable
        endpoint := os.Getenv("AZURE_APPCONFIG_ENDPOINT")
        if endpoint == "" {
            log.Fatal("AZURE_APPCONFIG_ENDPOINT environment variable is not set")
        }
    
        // Create a credential using DefaultAzureCredential
        credential, err := azidentity.NewDefaultAzureCredential(nil)
        if err != nil {
            log.Fatalf("Failed to create credential: %v", err)
        }
    
        // Set up authentication options with endpoint and credential
        authOptions := azureappconfiguration.AuthenticationOptions{
            Endpoint:   endpoint,
            Credential: credential,
        }
    
        // Configure feature flag options
        options := &azureappconfiguration.Options{
            FeatureFlagOptions: azureappconfiguration.FeatureFlagOptions{
                Enabled: true,
                RefreshOptions: azureappconfiguration.RefreshOptions{
                    Enabled: true,
                },
            },
        }
    
        // Load configuration from Azure App Configuration
        appConfig, err := azureappconfiguration.Load(ctx, authOptions, options)
        if err != nil {
            log.Fatalf("Failed to load configuration: %v", err)
        }
    
        return appConfig, nil
    }
    

    Návod

    Pokud není zadán FeatureFlagOptionsžádný selektor , načte všechny příznaky funkcí bez popisku v App Configuration Storu. Výchozí interval aktualizace příznaků funkcí je 30 sekund. Toto chování můžete přizpůsobit pomocí parametru RefreshOptions . Například následující fragment kódu načte pouze příznaky funkcí, které začínají testAppem: v názvu klíče a mají vývoj popisků. Kód také změní dobu intervalu aktualizace na 5 minut. Všimněte si, že tato doba intervalu aktualizace je oddělená od času pro běžné hodnoty klíče.

    azureappconfiguration.FeatureFlagOptions{
        Enabled: true,
        Selectors: []azureappconfiguration.Selector{
            {
                KeyFilter:   "TestApp:*",
                LabelFilter: "dev",
            },
        },
        RefreshOptions: azureappconfiguration.RefreshOptions{
            Enabled: true,
            Interval: 5 * time.Minute,
        },
    }
    
  5. Vytvořte hlavní soubor main.goaplikace:

    package main
    
    import (
    	"context"
    	"fmt"
    	"log"
    	"os"
    	"time"
    
    	"github.com/microsoft/Featuremanagement-Go/featuremanagement"
    	"github.com/microsoft/Featuremanagement-Go/featuremanagement/providers/azappconfig"
    )
    
    func main() {
        ctx := context.Background()
    
        // Load Azure App Configuration
        appConfig, err := loadAzureAppConfiguration(ctx)
        if err != nil {
            log.Fatalf("Error loading Azure App Configuration: %v", err)
        }
    
        // Create feature flag provider
        featureFlagProvider, err := azappconfig.NewFeatureFlagProvider(appConfig)
        if err != nil {
            log.Fatalf("Error creating feature flag provider: %v", err)
        }
    
        // Create feature manager
        featureManager, err := featuremanagement.NewFeatureManager(featureFlagProvider, nil)
        if err != nil {
            log.Fatalf("Error creating feature manager: %v", err)
        }
    
        // Monitor the Beta feature flag
        fmt.Println("Monitoring 'Beta' feature flag (press Ctrl+C to exit):")
        fmt.Println("Toggle the Beta feature flag in Azure portal to see real-time updates...")
        fmt.Println()
    
        ticker := time.NewTicker(5 * time.Second)
        defer ticker.Stop()
    
        for {
            select {
            case <-ticker.C:
                // Refresh configuration to get latest feature flag settings
                if err := appConfig.Refresh(ctx); err != nil {
                    log.Printf("Error refreshing configuration: %v", err)
                    continue
                }
    
                // Evaluate the Beta feature flag
                isEnabled, err := featureManager.IsEnabled("Beta")
                if err != nil {
                    log.Printf("Error checking if Beta feature is enabled: %v", err)
                    continue
                }
    
                // Print timestamp and feature status
                timestamp := time.Now().Format("15:04:05")
                fmt.Printf("[%s] Beta is enabled: %t\n", timestamp, isEnabled)
    
            case <-ctx.Done():
                fmt.Println("\nShutting down...")
                return
            }
        }
    }
    

Spuštění aplikace

  1. Spusťte aplikaci:

    go mod tidy
    go run .
    

  2. Aplikace začne monitorovat Beta vlajku funkce a každých 5 sekund zobrazí její aktuální stav.

    Monitoring 'Beta' feature flag (press Ctrl+C to exit):
    Toggle the Beta feature flag in Azure portal to see real-time updates...
    
    [14:30:15] Beta is enabled: false
    [14:30:20] Beta is enabled: false
    [14:30:25] Beta is enabled: false
    
  3. Přihlaste se do Azure Portalu. Zvolte Všechny prostředky a vyberte úložiště App Configuration, které jste vytvořili dříve.

  4. Vyberte Správce funkcí a vyhledejte příznak funkce Beta . Povolte příznak zaškrtnutím políčka v části Povoleno.

  5. Vraťte se do konzolové aplikace. Po několika sekundách by se měla zobrazit změna stavu příznaku funkce:

    [14:30:30] Beta is enabled: false
    [14:30:35] Beta is enabled: true
    [14:30:40] Beta is enabled: true
    
  6. Příznak funkce můžete zapnout a vypnout na webu Azure Portal, abyste viděli aktualizace v reálném čase v konzolové aplikaci bez restartování.

  7. Stisknutím kombinace kláves Ctrl+C aplikaci zastavte.

Vyčistěte zdroje

Pokud nechcete dál používat prostředky vytvořené v tomto článku, odstraňte skupinu prostředků, kterou jste tady vytvořili, abyste se vyhnuli poplatkům.

Důležité

Odstranění skupiny prostředků je nevratné. Skupina prostředků a všechny prostředky v ní se trvale odstraní. Dávejte pozor, abyste omylem neodstranili nesprávnou skupinu prostředků nebo jednotlivé prostředky. Pokud jste vytvořili prostředky pro tento článek ve skupině prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte jednotlivé prostředky z příslušného podokna místo odstranění skupiny prostředků.

  1. Přihlaste se k webu Azure Portal a vyberte skupiny prostředků.
  2. Do pole Filtrovat podle názvu zadejte název vaší skupiny prostředků.
  3. V seznamu výsledků vyberte název skupiny prostředků, abyste zobrazili přehled.
  4. Vyberte odstranit skupinu zdrojů.
  5. Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Potvrďte název skupiny prostředků a vyberte Odstranit.

Po několika okamžicích se skupina prostředků a všechny její prostředky vymažou.

Další kroky

V tomto rychlém startu jste vytvořili příznak funkce v Azure App Configuration a použili ho v konzolové aplikaci Go. Knihovna Feature Management Go poskytuje bohaté možnosti příznaků funkcí, které se bezproblémově integrují se službou Azure App Configuration. Další funkce najdete v následujícím dokumentu.

I když příznak funkce umožňuje aktivovat nebo deaktivovat funkce v aplikaci, můžete chtít přizpůsobit příznak funkce na základě logiky vaší aplikace. Filtry funkcí umožňují podmíněně povolit příznak funkce. Další informace najdete v následujícím kurzu.

Azure App Configuration nabízí vestavěné filtry funkcí, které umožňují aktivovat příznak vlastnosti pouze během určitého období nebo pro konkrétní cílovou skupinu vaší aplikace. Další informace najdete v následujícím kurzu.