Compartir a través de


Inicio rápido: envío y recepción de mensajes de un tema de espacio de nombres de Azure Event Grid (.NET)

En este inicio rápido, hará lo siguiente:

  1. Crear un espacio de nombres de Event Grid desde Azure Portal.
  2. Crear un tema del espacio de nombres de Event Grid medieante Azure Portal.
  3. Creación de una suscripción a eventos mediante Azure Portal.
  4. Escribir una aplicación de consola de .NET para enviar un conjunto de mensajes al tema
  5. Escribir una aplicación de consola de .NET para recibir esos mensajes del tema.

Nota:

En este inicio rápido se proporcionan instrucciones paso a paso para implementar un escenario sencillo de envío de un lote de mensajes a un tema del espacio de nombres de Event Grid y la posterior recepción de estos. Para obtener información general sobre la biblioteca cliente de .NET, consulte Biblioteca cliente de Azure Event Grid para .NET. Para obtener más ejemplos, consulte los ejemplos de .NET de Event Grid en GitHub.

Requisitos previos

Si no está familiarizado con el servicio, consulte la información general sobre Event Grid antes de seguir este inicio rápido.

  • Suscripción de Azure. Para usar los servicios de Azure, entre los que se incluye Azure Event Grid, se necesita una suscripción. Si no tiene una cuenta de Azure existente, puede registrarse para obtener una evaluación gratuita.
  • Visual Studio 2022. La aplicación de ejemplo utiliza las nuevas características que se introdujeron en C# 10. Para usar la sintaxis más reciente, le recomendamos que instale .NET 6.0, o una versión posterior, y establezca la versión del lenguaje en latest. Si usa Visual Studio, las versiones anteriores a Visual Studio 2022 no son compatibles con las herramientas necesarias para compilar proyectos de C# 10.

Creación de un espacio de nombres en Azure Portal

Un espacio de nombres en Azure Event Grid es un contenedor lógico para uno o varios temas, clientes, grupos de clientes, espacios de temas y enlaces de permisos. Proporciona un espacio de nombres único, lo que le permite tener varios recursos en la misma región de Azure. Con un espacio de nombres de Azure Event Grid, ahora puede agrupar recursos relacionados y administrarlos como una sola unidad en la suscripción de Azure.

Lea las secciones siguientes para crear, visualizar y administrar un espacio de nombres de Azure Event Grid.

Para crear un espacio de nombres:

  1. Inicie sesión en Azure Portal.

  2. En el cuadro de búsqueda, escriba Espacios de nombres de Event Grid y seleccione Espacios de nombres de Event Grid en los resultados.

    Captura de pantalla que muestra los espacios de nombres de Event Grid en los resultados de la búsqueda.

  3. En la página Espacios de nombres de Event Grid, seleccione + Crear en la barra de herramientas.

    Captura de pantalla que muestra la página de Espacios de nombres de Event Grid con el botón Crear de la barra de herramientas seleccionado.

  4. En la página Conceptos básicos, siga estos pasos.

    1. Seleccione la suscripción de Azure en la que desea crear el espacio de nombres.

    2. Seleccione un grupo de recursos existente o cree uno nuevo.

    3. Escriba nombre para el espacio de nombres.

    4. Seleccione la región o la ubicación en la que desea crear el espacio de nombres.

    5. En la parte inferior de la página, seleccione Revisar y crear.

      Captura de pantalla que muestra la pestaña Aspectos básicos de la página Crear espacio de nombres.

  5. En la pestaña Revisar y crear, examine la configuración y seleccione Crear.

  6. En la página Implementación correcta, seleccione Ir al recurso para ir a la página de su espacio de nombres.

Creación de un tema de espacio de nombres

  1. Si no está en la página Espacio de nombres de Event Grid, siga los pasos para crear, ver y administrar espacios de nombres para ver el espacio de nombres que quiere usar para crear el tema.

  2. En la página Espacio de nombres de Event Grid, seleccione la opción Temas de la sección Agente de eventos en el menú de la izquierda.

  3. En la página Temas, seleccione + Tema en la barra de comandos.

    Captura de pantalla que muestra la creación de temas del espacio de nombres de Event Grid.

  4. En la página Crear tema, escriba el nombre del tema que quiere crear y seleccione Crear.

    Captura de pantalla que muestra los aspectos básicos de la creación de temas del espacio de nombres de Event Grid.

Creación de una suscripción a evento

  1. Si está en la página Temas del espacio de nombres de Event Grid en Azure Portal, seleccione el tema en la lista de temas. Si está en la página Temas, siga las instrucciones para crear, ver y administrar temas de espacio de nombres para identificar el tema que desea usar para crear la suscripción de eventos.

    Recorte de pantalla que muestra la página de temas de Event Grid con un tema seleccionado.

  2. En la página Tema de espacio de nombres de Event Grid, seleccione la opción Suscripciones en la sección Entidades del menú de la izquierda.

  3. En la página Suscripciones, seleccione el botón + Suscripción en la barra de comandos.

    Captura de pantalla que muestra la creación de suscripciones a eventos de Event Grid.

  4. En la pestaña Aspectos básicos, siga estos pasos:

    1. Escriba un nombre para la suscripción que desea crear

    2. Confirme que el esquema de entrega está establecido Cloud Events v1.0.

    3. Confirme que el modo de entrega está establecido en Cola (modo de extracción).

    4. Seleccione Siguiente: Filtros en la parte inferior de la página.

      Captura de pantalla que muestra los aspectos básicos de la creación de suscripciones a eventos de Event Grid.

  5. En la pestaña Filtros, agregue los nombres de los tipos de eventos que quiere filtrar en la suscripción y agregue los filtros de atributos de contexto que quiere usar en la suscripción. A continuación, seleccione Siguiente: Características adicionales en la parte inferior de la página.

    Captura de pantalla que muestra los filtros de la creación de suscripciones a eventos de Event Grid.

  6. En la pestaña Características adicionales, puede especificar la retención de eventos, el número máximo de entregas, la duración del bloqueo y la configuración de mensajes fallidos.

    Captura de pantalla que muestra las características adicionales de la creación de suscripciones a eventos de Event Grid.

  7. Seleccione Crear para crear la suscripción de eventos.

Autenticación de la aplicación en Azure

En este inicio rápido se muestran maneras de conectarse a Azure Event Grid: cadena de conexión. Esta sección muestra cómo usar una cadena de conexión para conectarse a un espacio de nombres de Event Grid. Si no está familiarizado con Azure, la opción de cadena de conexión es más fácil de seguir. La creación un nuevo espacio de nombres de Event Grid genera automáticamente unas claves iniciales principal y secundaria que conceden control total sobre todos los aspectos del espacio de nombres o temas. Un cliente puede usar la cadena de conexión para conectarse al espacio de nombres de Event Grid. Para copiar las claves de acceso del tema del espacio de nombres, siga estos pasos:

  1. En la página Espacio de nombres de Event Grid, seleccione Temas.

  2. Seleccione el tema al que necesite acceder.

  3. En la página Claves de acceso, seleccione el botón Copiar situado junto a Clave 1 o Clave 2 para copiar las claves de acceso en el portapapeles para su uso posterior. Pegue este valor en el Bloc de notas o cualquier otra ubicación temporal.

    Recorte de pantalla que muestra la clave de acceso de un tema de Event Grid.

Inicio de Visual Studio

Inicie Visual Studio. Si aparece la ventana Introducción, seleccione el vínculo Continuar sin código en el panel derecho.

Envío de mensajes al tema

En esta sección se muestra cómo crear una aplicación de consola de .NET para enviar mensajes a una tema de Event Grid.

Creación de una aplicación de consola

  1. En Visual Studio, seleccione el menú Archivo ->Nuevo ->Proyecto.

  2. En el cuadro de diálogo Crear un nuevo proyecto, siga estos pasos: Si no ve este cuadro de diálogo, seleccione Archivo en el menú, seleccione Nuevo y, después, seleccione Proyecto.

    1. Seleccione C# como lenguaje de programación.

    2. Seleccione Consola como tipo de aplicación.

    3. Seleccione Aplicación de consola en la lista de resultados.

    4. Después, seleccione Siguiente.

      Captura de pantalla que muestra el cuadro de diálogo Crear proyecto nuevo con C# y Consola seleccionados.

  3. Escriba EventSender como nombre del proyecto, EventGridQuickStart como nombre de la solución y, después, seleccione Siguiente.

    Captura de pantalla que muestra los nombres de solución y proyecto en el cuadro de diálogo Configurar el nuevo proyecto.

  4. En la página Información adicional, seleccione Crear para crear la solución y el proyecto.

Agregar los paquetes de NuGet al proyecto

  1. Seleccione Herramientas>Administrador de paquetes NuGet>Consola del Administrador de paquetes en el menú.

  2. Ejecute el siguiente comando para instalar el paquete NuGet Azure.Messaging.EventGrid:

    Install-Package Azure.Messaging.EventGrid.Namespaces
    

Agregar código para enviar eventos al tema del espacio de nombres

  1. Reemplace el contenido de Program.cs por el código siguiente. Se describen los pasos importantes, con información adicional en los comentarios del código.

    Importante

    Actualice los valores de marcadores de posición (<NAMESPACE-ENDPOINT> , <TOPIC-NAME>, <TOPIC-ACCESS-KEY>, <TOPIC-SUBSCRIPTION-NAME>) en el fragmento de código con los nombres del punto de conexión del espacio de nombres, el nombre del tema y la clave del tema.

    using Azure.Messaging;
    using Azure;
    using Azure.Messaging.EventGrid.Namespaces;
    
    
    // TODO: Replace the following placeholders with appropriate values
    
    // Endpoint of the namespace that you can find on the Overview page for your Event Grid namespace. Prefix it with https://.
    // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. 
    var namespaceEndpoint = "<NAMESPACE-ENDPOINT>";
    
    // Name of the topic in the namespace
    var topicName = "<TOPIC-NAME>";
    
    // Access key for the topic
    var topicKey = "<TOPIC-ACCESS-KEY>";
    
    // Construct the client using an Endpoint for a namespace as well as the access key
    var client = new EventGridSenderClient(new Uri(namespaceEndpoint), topicName, new AzureKeyCredential(topicKey));
    
    // Publish a single CloudEvent using a custom TestModel for the event data.
    var @ev = new CloudEvent("employee_source", "type", new TestModel { Name = "Bob", Age = 18 });
    await client.SendAsync(ev);
    
    // Publish a batch of CloudEvents.
    
    await client.SendAsync(
    new[] {
        new CloudEvent("employee_source", "type", new TestModel { Name = "Tom", Age = 55 }),
        new CloudEvent("employee_source", "type", new TestModel { Name = "Alice", Age = 25 })});
    
    Console.WriteLine("Three events have been published to the topic. Press any key to end the application.");
    Console.ReadKey();
    
    public class TestModel
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }
    
    
  2. Compile el proyecto y asegúrese de que no hay errores.

  3. Ejecute el programa y espere el mensaje de confirmación.

    Three events have been published to the topic. Press any key to end the application.
    

    Importante

    En la mayoría de los casos, la asignación de roles tardará un minuto o dos en propagarse en Azure. En ocasiones excepcionales, puede tardar hasta ocho minutos. Si recibe errores de autenticación al ejecutar por primera vez el código, espere unos instantes e inténtelo de nuevo.

  4. En Azure Portal, haga lo siguiente:

    1. Vaya al espacio de nombres de Event Grid.

    2. En la página Información general, verá el número de eventos publicados en el espacio de nombres del gráfico.

      Captura de pantalla que muestra la página del espacio de nombres de Event Grid en Azure Portal.

Extracción de mensajes del tema

En esta sección, se crea una aplicación de consola de .NET que recibe mensajes del tema.

Creación de un proyecto para recibir los CloudEvents publicados

  1. En la ventana del Explorador de soluciones, haga clic con el botón derecho en la solución EventGridQuickStart, haga clic en Agregar y seleccione Nuevo proyecto.
  2. Seleccione Aplicación de consola y elija Siguiente.
  3. Escriba EventReceiver en Nombre de proyecto y seleccione Crear.
  4. En la ventana del Explorador de soluciones, haga clic con el botón derecho en EventReceiver y seleccione Establecer como proyecto de inicio.

Agregar los paquetes de NuGet al proyecto

  1. Seleccione Herramientas>Administrador de paquetes NuGet>Consola del Administrador de paquetes en el menú.

  2. Ejecute el siguiente comando para instalar el paquete NuGet Azure.Messaging.EventGrid. Seleccione EventReceiver para el proyecto predeterminado si aún no está establecido.

    Install-Package Azure.Messaging.EventGrid.Namespaces
    

    Captura de pantalla que muestra el proyecto EventReceiver seleccionado en la consola del administrador de paquetes.

Agregar el código para recibir eventos del tema

En esta sección agregará código para recuperar mensajes de la cola.

  1. En la clase Program, agregue el siguiente código:

    Importante

    Actualice los valores de marcadores de posición (<NAMESPACE-ENDPOINT>, <TOPIC-NAME>, <TOPIC-ACCESS-KEY>, <TOPIC-SUBSCRIPTION-NAME>) en el fragmento de código con el punto de conexión del espacio de nombres, el nombre del tema, la clave del tema y el nombre de suscripción del tema.

    using Azure;
    using Azure.Messaging;
    using Azure.Messaging.EventGrid.Namespaces;
    
    // TODO: Replace the following placeholders with appropriate values
    
    // Endpoint of the namespace that you can find on the Overview page for your Event Grid namespace
    // Example: https://namespace01.eastus-1.eventgrid.azure.net. 
    var namespaceEndpoint = "<NAMESPACE-ENDPOINT>"; // Should be in the form: https://namespace01.eastus-1.eventgrid.azure.net. 
    
    // Name of the topic in the namespace
    var topicName = "<TOPIC-NAME>";
    
    // Access key for the topic
    var topicKey = "<TOPIC-ACCESS-KEY>";
    
    // Name of the subscription to the topic
    var subscriptionName = "<TOPIC-SUBSCRIPTION-NAME>";
    
    // Maximum number of events you want to receive
    const short MaxEventCount = 3;
    
    // Construct the client using an Endpoint for a namespace as well as the access key
    var client = new EventGridReceiverClient(new Uri(namespaceEndpoint), topicName, subscriptionName, new AzureKeyCredential(topicKey));
    
    // Receive the published CloudEvents. 
    ReceiveResult result = await client.ReceiveAsync(MaxEventCount);
    
    Console.WriteLine("Received Response");
    Console.WriteLine("-----------------");
    
    
  2. Anexe los siguientes métodos al final de la clase Program.

    // handle received messages. Define these variables on the top.
    
    var toRelease = new List<string>();
    var toAcknowledge = new List<string>();
    var toReject = new List<string>();
    
    // Iterate through the results and collect the lock tokens for events we want to release/acknowledge/result
    
    foreach (ReceiveDetails detail in result.Details)
    {
        CloudEvent @event = detail.Event;
        BrokerProperties brokerProperties = detail.BrokerProperties;
        Console.WriteLine(@event.Data.ToString());
    
        // The lock token is used to acknowledge, reject or release the event
        Console.WriteLine(brokerProperties.LockToken);
        Console.WriteLine();
    
        // If the event is from the "employee_source" and the name is "Bob", we are not able to acknowledge it yet, so we release it
        if (@event.Source == "employee_source" && @event.Data.ToObjectFromJson<TestModel>().Name == "Bob")
        {
            toRelease.Add(brokerProperties.LockToken);
        }
        // acknowledge other employee_source events
        else if (@event.Source == "employee_source")
        {
            toAcknowledge.Add(brokerProperties.LockToken);
        }
        // reject all other events
        else
        {
            toReject.Add(brokerProperties.LockToken);
        }
    }
    
    // Release/acknowledge/reject the events
    
    if (toRelease.Count > 0)
    {
        ReleaseResult releaseResult = await client.ReleaseAsync(toRelease);
    
        // Inspect the Release result
        Console.WriteLine($"Failed count for Release: {releaseResult.FailedLockTokens.Count}");
        foreach (FailedLockToken failedLockToken in releaseResult.FailedLockTokens)
        {
            Console.WriteLine($"Lock Token: {failedLockToken.LockToken}");
            Console.WriteLine($"Error Code: {failedLockToken.Error}");
            Console.WriteLine($"Error Description: {failedLockToken.ToString}");
        }
    
        Console.WriteLine($"Success count for Release: {releaseResult.SucceededLockTokens.Count}");
        foreach (string lockToken in releaseResult.SucceededLockTokens)
        {
            Console.WriteLine($"Lock Token: {lockToken}");
        }
        Console.WriteLine();
    }
    
    if (toAcknowledge.Count > 0)
    {
        AcknowledgeResult acknowledgeResult = await client.AcknowledgeAsync(toAcknowledge);
    
        // Inspect the Acknowledge result
        Console.WriteLine($"Failed count for Acknowledge: {acknowledgeResult.FailedLockTokens.Count}");
        foreach (FailedLockToken failedLockToken in acknowledgeResult.FailedLockTokens)
        {
            Console.WriteLine($"Lock Token: {failedLockToken.LockToken}");
            Console.WriteLine($"Error Code: {failedLockToken.Error}");
            Console.WriteLine($"Error Description: {failedLockToken.ToString}");
        }
    
        Console.WriteLine($"Success count for Acknowledge: {acknowledgeResult.SucceededLockTokens.Count}");
        foreach (string lockToken in acknowledgeResult.SucceededLockTokens)
        {
            Console.WriteLine($"Lock Token: {lockToken}");
        }
        Console.WriteLine();
    }
    
    if (toReject.Count > 0)
    {
        RejectResult rejectResult = await client.RejectAsync(toReject);
    
        // Inspect the Reject result
        Console.WriteLine($"Failed count for Reject: {rejectResult.FailedLockTokens.Count}");
        foreach (FailedLockToken failedLockToken in rejectResult.FailedLockTokens)
        {
            Console.WriteLine($"Lock Token: {failedLockToken.LockToken}");
            Console.WriteLine($"Error Code: {failedLockToken.Error}");
            Console.WriteLine($"Error Description: {failedLockToken.ToString}");
        }
    
        Console.WriteLine($"Success count for Reject: {rejectResult.SucceededLockTokens.Count}");
        foreach (string lockToken in rejectResult.SucceededLockTokens)
        {
            Console.WriteLine($"Lock Token: {lockToken}");
        }
        Console.WriteLine();
    }
    
    public class TestModel
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }    
    
    
  3. En la ventana del Explorador de soluciones, haga clic con el botón derecho en el proyecto EventReceiver y seleccione Establecer como proyecto de inicio.

  4. Compile el proyecto y asegúrese de que no hay errores.

  5. Ejecute la aplicación EventReceiver y confirme que ve los tres eventos en la ventana de salida.

    Captura de pantalla que muestra la salida de la aplicación Receiver.

Limpieza de recursos

Vaya al espacio de nombres de Event Grid en Azure Portal y seleccione Eliminar para eliminar el espacio de nombres de Event Grid y el tema que hay en él.

Consulte Referencia de la API de .NET