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.
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.
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:
|
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
oMessageId
.
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.