Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este inicio rápido, creará una marca de características en Azure App Configuration y la usará para controlar dinámicamente la disponibilidad de las características en una aplicación de consola de Go.
La compatibilidad con la administración de características amplía la característica de configuración dinámica en App Configuration. En este ejemplo se muestra cómo integrar marcas de características en una aplicación de consola de Go con funcionalidades de supervisión en tiempo real.
Prerrequisitos
- Una cuenta de Azure con una suscripción activa. cree una de forma gratuita.
- Una tienda de configuración de aplicaciones. Crear un almacén.
- Vaya a la versión 1.21 o posterior. Para obtener información sobre la instalación de Go, consulte la página Descargas de Go.
- Proveedor Go de Azure App Configuration v1.1.0 o posterior.
Creación de una marca de características
Agregue una marca de característica denominada Beta al almacén de App Configuration y deje Etiqueta y descripción con sus valores predeterminados. Para más información sobre cómo agregar marcas de características a un almacén mediante Azure Portal o la CLI, vaya a Creación de una marca de característica.
Uso de una marca de características
Cree un directorio para el proyecto de Go y vaya a él:
mkdir go-feature-flag-quickstart cd go-feature-flag-quickstartInicialice un nuevo módulo de Go:
go mod init go-feature-flag-quickstartInstale los paquetes de Go necesarios para Azure App Configuration y la administración de características:
go get github.com/microsoft/Featuremanagement-Go/featuremanagement go get github.com/microsoft/Featuremanagement-Go/featuremanagement/providers/azappconfigCree un archivo denominado
appconfig.gocon el siguiente contenido. Puede conectarse a su App Configuration store utilizando Microsoft Entra ID (recomendado) o una cadena de conexión.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 }Sugerencia
Cuando no se especifica ningún selector en
FeatureFlagOptions, carga todas las marcas de características sin etiqueta en el almacén de App Configuration. El intervalo de actualización predeterminado de las marcas de características es de 30 segundos. Puede personalizar este comportamiento a través del parámetroRefreshOptions. Por ejemplo, el siguiente fragmento de código carga solo las marcas de características que comienzan con TestApp: en su nombre de clave y tienen la etiqueta dev. El código también cambia el intervalo de actualización a 5 minutos. Tenga en cuenta que el intervalo de tiempo de actualización es independiente del de los valores de clave normales.azureappconfiguration.FeatureFlagOptions{ Enabled: true, Selectors: []azureappconfiguration.Selector{ { KeyFilter: "TestApp:*", LabelFilter: "dev", }, }, RefreshOptions: azureappconfiguration.RefreshOptions{ Enabled: true, Interval: 5 * time.Minute, }, }Cree el archivo
main.gode aplicación principal :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 } } }
Ejecutar la aplicación
Ejecute la aplicación:
go mod tidy go run .
La aplicación comienza a supervisar la marca de característica Beta y muestra su estado actual cada 5 segundos:
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: falseInicie sesión en Azure Portal. Seleccione Todos los recursos y seleccione el almacén de App Configuration que creó anteriormente.
Seleccione Administrador de características y busque la marca de características Beta . Habilite la marca activando la casilla en Habilitado.
Vuelva a la aplicación de consola. Después de unos segundos, debería ver el cambio de estado de la marca de característica:
[14:30:30] Beta is enabled: false [14:30:35] Beta is enabled: true [14:30:40] Beta is enabled: truePuede activar y desactivar la marca de características en Azure Portal para ver las actualizaciones en tiempo real en la aplicación de consola sin reiniciarla.
Presione Ctrl+C para detener la aplicación.
Limpieza de recursos
Si no quiere seguir usando los recursos que se han creado en este artículo, elimine el grupo de recursos que creó aquí para evitar cargos.
Importante
La eliminación de un grupo de recursos es irreversible. El grupo de recursos y todos los recursos que contiene se eliminan permanentemente. Asegúrese de que no elimina por accidente el grupo de recursos o los recursos equivocados. Si creó los recursos para este artículo en un grupo de recursos que contenga los recursos que desee conservar, elimine cada recurso de forma individual desde su panel respectivo, en lugar de eliminar el grupo de recursos.
- Inicie sesión en Azure Portal y después seleccione Grupos de recursos.
- En el cuadro de texto Filtrar por nombre, escriba el nombre del grupo de recursos.
- En la lista resultados, seleccione el nombre del grupo de recursos para ver la información general.
- Seleccione Eliminar grupo de recursos.
- Se le pedirá que confirme la eliminación del grupo de recursos. Escriba el nombre del grupo de recursos para confirmar y seleccione Eliminar.
Transcurridos unos instantes, el grupo de recursos y todos sus recursos se eliminan.
Pasos siguientes
En este inicio rápido, ha creado una marca de características en Azure App Configuration y la ha usado en una aplicación de consola de Go. La biblioteca Go de administración de funciones ofrece capacidades enriquecidas de banderas de funciones que se integran perfectamente con Azure App Configuration. Para obtener más características, continúe con el siguiente documento.
Aunque una marca de característica permite activar o desactivar la funcionalidad en la aplicación, es posible que quieras personalizar una marca de característica en función de la lógica de la aplicación. Los filtros de características permiten habilitar una marca de característica condicionalmente. Para obtener más información, continúe con el siguiente tutorial.
Azure App Configuration ofrece filtros de características integrados que permiten activar una marca de característica solo durante un período específico o para un público específico de la aplicación. Para obtener más información, continúe con el siguiente tutorial.