Service Bus queues and topics as event handlers for Azure Event Grid events
An event handler is the place where the event is sent. The handler takes some further action to process the event. Several Azure services are automatically configured to handle events and Azure Service Bus is one of them.
You can use a Service queue or topic as a handler for events from Event Grid.
Service Bus queues
Note
Session enabled queues are not supported as event handlers for Azure Event Grid events
You can route events in Event Grid directly to Service Bus queues for use in buffering or command & control scenarios in enterprise applications.
In the Azure portal, while creating an event subscription, select Service Bus Queue as endpoint type and then click select an endpoint to choose a Service Bus queue.
Using CLI to add a Service Bus queue handler
For Azure CLI, the following example subscribes and connects an event grid topic to a Service Bus queue:
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
Service Bus topics
You can route events in Event Grid directly to Service Bus topics to handle Azure system events with Service Bus topics, or for command & control messaging scenarios.
In the Azure portal, while creating an event subscription, select Service Bus Topic as endpoint type and then click select and endpoint to choose a Service Bus topic.
Using CLI to add a Service Bus topic handler
For Azure CLI, the following example subscribes and connects an event grid topic to a Service Bus topic:
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
Message headers
These are the properties you receive in the message headers:
| Property name | Description |
|---|---|
| aeg-subscription-name | Name of the event subscription. |
| aeg-delivery-count | Number of attempts made for the event. |
| aeg-event-type | Type of the event. It can be one of the following values:
|
| aeg-metadata-version | Metadata version of the event. For Event Grid event schema, this property represents the metadata version and for cloud event schema, it represents the spec version. |
| aeg-data-version | Data version of the event. For Event Grid event schema, this property represents the data version and for cloud event schema, it doesn't apply. |
| aeg-output-event-id | ID of the Event Grid event. |
When sending an event to a Service Bus queue or topic as a brokered message, the messageid of the brokered message is an internal system ID.
The internal system ID for the message will be maintained across redelivery of the event so that you can avoid duplicate deliveries by turning on duplicate detection on the service bus entity. We recommend that you enable duration of the duplicate detection on the Service Bus entity to be either the time-to-live (TTL) of the event or max retry duration, whichever is longer.
REST examples (for PUT)
Service Bus queue
{
"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"
}
}
Service Bus queue - delivery with managed identity
{
"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"
}
}
Service Bus topic
{
"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"
}
}
Service Bus topic - delivery with managed identity
{
"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"
}
}
Delivery properties
Event subscriptions allow you to set up HTTP headers that are included in delivered events. This capability allows you to set custom headers that are required by a destination. You can set custom headers on the events that are delivered to Azure Service Bus queues and topics.
Azure Service Bus supports the use of following message properties when sending single messages.
| Header name | Header type |
|---|---|
MessageId |
Dynamic |
PartitionKey |
Static or dynamic |
SessionId |
Static or dynamic |
CorrelationId |
Static or dynamic |
Label |
Static or dynamic |
ReplyTo |
Static or dynamic |
ReplyToSessionId |
Static or dynamic |
To |
Static or dynamic |
ViaPartitionKey |
Static or dynamic |
Note
- The default value of
MessageIdis the internal ID of the Event Grid event. You can override it. For example,data.field. - You can only set either
SessionIdorMessageId.
For more information, see Custom delivery properties.
Next steps
See the Event handlers article for a list of supported event handlers.
Tilbakemeldinger
Send inn og vis tilbakemelding for