Compartir a través de


Colas y temas de Service Bus como controladores de eventos para eventos de Azure Event Grid

Un controlador de eventos recibe eventos de un origen de eventos a través de Event Grid y los procesa. Puede usar instancias de algunos servicios de Azure para controlar eventos, y Azure Service Bus es uno de ellos. En este artículo se muestra cómo se puede usar una cola o tema de Service Bus como controlador para los eventos de Event Grid.

Colas de Service Bus

Puede redirigir los eventos de Event Grid directamente a las colas de Service Bus para usarlos en escenarios de almacenamiento en búfer o comando y control en aplicaciones empresariales.

Usar Azure Portal

En Azure Portal, al crear una suscripción de eventos, seleccione Cola de Service Bus como tipo de punto de conexión y, luego, haga clic en Seleccionar un extremo para elegir una cola de Service Bus.

Captura de pantalla en la que se muestra la configuración de un controlador de cola de Service Bus.

Nota:

Si usa como destino una suscripción a una cola o tema habilitada para la sesión, debe establecer la propiedad session en el evento mediante Delivery Property con el nombre de encabezado "SessionId".

Uso de CLI de Azure

Use el comando az eventgrid event-subscription create con --endpoint-type establecido en servicebusqueue y --endpoint establecido en /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Este es un ejemplo:

az eventgrid event-subscription create \
    --name <my-event-subscription> \
    --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1 \
    --endpoint-type servicebusqueue \
    --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1

También puede usar el comando az eventgrid topic event-subscription para temas personalizados, el comando az eventgrid system-topic event-subscription para temas del sistema y el comando az eventgrid partner topic event-subscription create para temas de asociados.

Uso de Azure PowerShell

Use el comando New-AzEventGridSubscription con -EndpointType establecido servicebusqueue en y -Endpoint establecido en /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/queues/<QUEUE NAME>. Este es un ejemplo:

New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
            -TopicName Topic1 `
            -EndpointType servicebusqueue `
            -Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/queues/queue1 `
            -EventSubscriptionName EventSubscription1

También puede usar el comando New-AzEventGridSystemTopicEventSubscription para temas del sistema y el comando New-AzEventGridPartnerTopicEventSubscription para temas de asociados.

Temas de Service Bus

Puede enrutar los eventos de Event Grid directamente a los temas de Service Bus para escenarios de mensajería de comando y control.

Usar Azure Portal

En Azure Portal, al crear una suscripción de eventos, seleccione Tema de Service Bus como tipo de punto de conexión y, luego, haga clic en Seleccionar un extremo para elegir un tema de Service Bus.

Captura de pantalla en la que se muestra la configuración de un controlador de temas de Service Bus.

Uso de CLI de Azure

Use el comando az eventgrid event-subscription create con --endpoint-type establecido en servicebustopic y --endpoint establecido en /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Este es un ejemplo:

az eventgrid event-subscription create \
    --name <my-event-subscription> \
    --source-resource-id /subscriptions/{SubID}/resourceGroups/{RG}/providers/Microsoft.EventGrid/topics/topic1 \
    --endpoint-type servicebustopic \
    --endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1

También puede usar el comando az eventgrid topic event-subscription para temas personalizados, el comando az eventgrid system-topic event-subscription para temas del sistema y el comando az eventgrid partner topic event-subscription create para temas de asociados.

Uso de Azure PowerShell

Use el comando New-AzEventGridSubscription con -EndpointType establecido servicebustopic en y -Endpoint establecido en /subscriptions/{AZURE SUBSCRIPTION}/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<NAMESPACE NAME>/topics/<TOPIC NAME>. Este es un ejemplo:

New-AzEventGridSubscription -ResourceGroup MyResourceGroup `
            -TopicName Topic1 `
            -EndpointType servicebustopic `
            -Endpoint /subscriptions/{SubID}/resourceGroups/TestRG/providers/Microsoft.ServiceBus/namespaces/ns1/topics/topic1 `
            -EventSubscriptionName EventSubscription1

También puede usar el comando New-AzEventGridSystemTopicEventSubscription para temas del sistema y el comando New-AzEventGridPartnerTopicEventSubscription para temas de asociados.

Encabezados de mensaje

Estas son las propiedades que recibe en los encabezados de mensaje:

Nombre de propiedad Descripción
aeg-subscription-name Nombre de la suscripción de eventos.
aeg-delivery-count Número de intentos realizados para el evento.
aeg-event-type

Tipo de evento.

Puede ser uno de los siguientes valores:

  • SubscriptionValidation
  • Notificación
  • SubscriptionDeletion
aeg-metadata-version

Versión de metadatos del evento.

Esta propiedad representa la versión de los metadatos en el esquema de eventos de Event Grid y la versión de la especificación en el esquema de eventos en la nube.

aeg-data-version

Versión de datos del evento.

Esta propiedad representa la versión de los datos en el esquema de eventos de Event Grid y la no se aplica en el esquema de eventos en la nube.

aeg-output-event-id Id. del evento de Event Grid.

Cuando envías un evento a una cola o tema de Service Bus como un mensaje de intermediario, el messageid del mensaje de intermediario es un id. de sistema interno.

El id. de sistema interno del mensaje se mantiene cuando se vuelva a entregar el evento, para que pueda evitar entregas duplicadas; para ello, active la detección de duplicados en la entidad de Service Bus. Le recomendamos que habilite la duración de la detección de duplicados en la entidad Service Bus para que sea el período de vida (TTL) del evento o la duración máxima de reintentos, lo que sea más largo.

Propiedades de entrega

Las suscripciones a eventos permiten configurar encabezados HTTP que se incluyen en los eventos entregados. Esta capacidad permite establecer los encabezados personalizados que el destino requiere. Puede establecer encabezados personalizados en los eventos que se entregan a colas y temas de Azure Service Bus.

Azure Service Bus permite el uso de las propiedades de mensaje siguientes al enviar mensajes individuales.

Nombre de encabezado Tipo de encabezado
MessageId Dinámica
PartitionKey Estático o dinámico
SessionId Estático o dinámico
CorrelationId Estático o dinámico
Label Estático o dinámico
ReplyTo Estático o dinámico
ReplyToSessionId Estático o dinámico
To Estático o dinámico
ViaPartitionKey Estático o dinámico

Nota

  • El valor predeterminado de MessageId es el identificador interno del evento de Event Grid. Puede invalidarlo. Por ejemplo, data.field.
  • Solo puede establecer SessionId o MessageId.

Para obtener más información, vea Propiedades de entrega personalizadas.

Ejemplos de REST (para PUT)

Cola de Service Bus

{
    "properties": 
    {
        "destination": 
        {
			"endpointType": "ServiceBusQueue",
            "properties": 
            {
				"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/queues/<SERVICE BUS QUEUE NAME>"
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Cola de Service Bus: entrega con identidad administrada

{
	"properties": {
        "deliveryWithResourceIdentity": 
        {
            "identity": 
            {
				"type": "SystemAssigned"
			},
            "destination": 
            {
				"endpointType": "ServiceBusQueue",
                "properties": 
                {
					"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/queues/<SERVICE BUS QUEUE NAME>"
				}
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Tema de Service Bus

{
    "properties": 
    {
        "destination": 
        {
			"endpointType": "ServiceBusTopic",
            "properties": 
            {
				"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/topics/<SERVICE BUS TOPIC NAME>"
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Tema de Service Bus: entrega con identidad administrada

{
    "properties": 
    {
        "deliveryWithResourceIdentity": 
        {
            "identity": 
            {
				"type": "SystemAssigned"
			},
            "destination": 
            {
				"endpointType": "ServiceBusTopic",
                "properties": 
                {
					"resourceId": "/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.ServiceBus/namespaces/<SERVICE BUS NAMESPACE NAME>/topics/<SERVICE BUS TOPIC NAME>"
				}
			}
		},
		"eventDeliverySchema": "EventGridSchema"
	}
}

Nota:

Cuando se produce una conmutación por error de un espacio de nombres de Service Bus que tiene habilitada la recuperación ante desastres geográfica, el espacio de nombres secundario no emite eventos a Event Grid. Debe agregar manualmente la suscripción de Event Grid para el espacio de nombres secundario.

Pasos siguientes

Consulte el artículo Controladores de eventos para obtener una lista de controladores de eventos compatibles.