Bird
Raised Fist0
Azurecloud~10 mins

Event Grid subscriptions and filters in Azure - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Process Flow - Event Grid subscriptions and filters
Event Published
↓
Event Grid Topic
↓
Subscription Filter Check
↓
Send Event
↓
Event Delivered to Subscriber
Events are published to a topic, then each subscription checks filters. If filters match, event is sent to subscriber; otherwise, it is dropped.
Execution Sample
Azure
1. Create Event Grid Topic
2. Create Subscription with filter on eventType = 'orderCreated'
3. Publish event with eventType 'orderCreated'
4. Event delivered to subscriber
5. Publish event with eventType 'orderCancelled'
6. Event dropped (filter mismatch)
This sequence shows how Event Grid delivers events only to subscriptions whose filters match the event.
Process Table
StepEvent TypeFilter ConditionFilter Match?ActionResult
1orderCreatedeventType == 'orderCreated'YesSend EventEvent delivered to subscriber
2orderCancelledeventType == 'orderCreated'NoDrop EventEvent not delivered
💡 No more events to process
Status Tracker
VariableStartAfter Step 1After Step 2Final
eventTypenoneorderCreatedorderCancelledorderCancelled
filterConditioneventType == 'orderCreated'unchangedunchangedunchanged
filterMatchfalsetruefalsefalse
Key Moments - 2 Insights
Why does the event with type 'orderCancelled' not reach the subscriber?
Because the subscription filter only allows events where eventType equals 'orderCreated'. The execution_table row 2 shows filterMatch is No, so the event is dropped.
Can multiple subscriptions with different filters receive the same event?
Yes. Each subscription independently checks its filter. If multiple filters match the event, all those subscriptions receive it. This is implied by the filter check step in the concept_flow.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the filterMatch value at Step 1?
AUnknown
BNo
CYes
DFalse
💡 Hint
Check the 'Filter Match?' column in execution_table row for Step 1
At which step does the event get dropped due to filter mismatch?
AStep 1
BStep 2
CNo event is dropped
DBoth steps
💡 Hint
Look at the 'Action' column in execution_table to find when 'Drop Event' happens
If the filter condition changed to allow 'orderCancelled' events, what would happen at Step 2?
AEvent would be delivered
BEvent would be dropped
CNo change
DSubscription would be deleted
💡 Hint
Refer to how filterMatch affects Action in execution_table rows
Concept Snapshot
Event Grid subscriptions receive events from topics.
Subscriptions use filters to decide which events to get.
If event matches filter, it is delivered.
If not, event is dropped.
Filters can be on eventType or other properties.
Multiple subscriptions can receive the same event if filters match.
Full Transcript
Event Grid works by sending events from a topic to subscribers. Each subscriber has a subscription with filters. When an event is published, Event Grid checks each subscription's filter. If the event matches the filter, it is sent to the subscriber. Otherwise, it is dropped. For example, a subscription filtering on eventType 'orderCreated' will receive only those events. Events with other types like 'orderCancelled' will be ignored by that subscription. This filtering helps subscribers get only relevant events.

Practice

(1/5)
1. What is the main purpose of using filters in Azure Event Grid subscriptions?
easy
A. To receive only specific events based on criteria like event type or subject
B. To increase the number of events sent to subscribers
C. To block all events from being delivered
D. To change the event data before delivery

Solution

  1. Step 1: Understand Event Grid subscriptions

    Subscriptions let you receive events from Azure services.
  2. Step 2: Role of filters in subscriptions

    Filters help select only the events you want, based on event type or subject.
  3. Final Answer:

    To receive only specific events based on criteria like event type or subject -> Option A
  4. Quick Check:

    Filters select events = B [OK]
Hint: Filters pick events you want, ignoring others [OK]
Common Mistakes:
  • Thinking filters increase event volume
  • Believing filters block all events
  • Assuming filters modify event data
2. Which of the following is the correct JSON snippet to filter events by subject prefix in an Event Grid subscription?
easy
A. "filter": { "subjectBeginsWith": "/blobServices/default/containers/images" }
B. "filter": { "subjectEndsWith": "/blobServices/default/containers/images" }
C. "filter": { "eventType": "Microsoft.Storage.BlobCreated" }
D. "filter": { "subjectContains": "images" }

Solution

  1. Step 1: Identify subject prefix filter syntax

    The correct property to filter by subject prefix is "subjectBeginsWith".
  2. Step 2: Match the correct JSON snippet

    "filter": { "subjectBeginsWith": "/blobServices/default/containers/images" } uses "subjectBeginsWith" with the correct path prefix.
  3. Final Answer:

    "filter": { "subjectBeginsWith": "/blobServices/default/containers/images" } -> Option A
  4. Quick Check:

    Prefix filter uses subjectBeginsWith = A [OK]
Hint: Prefix filters use subjectBeginsWith property [OK]
Common Mistakes:
  • Confusing subjectEndsWith with subjectBeginsWith
  • Using eventType instead of subject filter
  • Using subjectContains which is not valid
3. Given this Event Grid subscription filter configuration:
{ "subjectBeginsWith": "/devices/", "subjectEndsWith": "/temperature" }

Which event subject will be delivered to the subscriber?
medium
A. /sensors/device123/temperature
B. /devices/device123/humidity
C. /devices/device123/temperature
D. /devices/temperature/device123

Solution

  1. Step 1: Understand filter conditions

    The event subject must start with "/devices/" and end with "/temperature".
  2. Step 2: Check each option

    /devices/device123/temperature matches both start and end. Others fail one condition.
  3. Final Answer:

    /devices/device123/temperature -> Option C
  4. Quick Check:

    Subject starts with /devices/ and ends with /temperature = A [OK]
Hint: Match both start and end strings exactly [OK]
Common Mistakes:
  • Ignoring subjectEndsWith condition
  • Confusing similar paths
  • Assuming partial matches are enough
4. You wrote this filter in your Event Grid subscription:
{ "subjectBeginsWith": "/orders/", "subjectEndsWith": "/completed" }

But no events are received even though events exist. What is the likely issue?
medium
A. The subscription is disabled
B. The filter syntax is invalid JSON
C. Event Grid does not support subject filters
D. The subject filter is case-sensitive and event subjects differ in case

Solution

  1. Step 1: Check filter syntax and support

    The JSON syntax is valid and Event Grid supports subject filters.
  2. Step 2: Consider case sensitivity and subscription status

    Subject filters are case-sensitive; if event subjects differ in case, no match occurs. Subscription being disabled would stop all events, but question implies filter issue.
  3. Final Answer:

    The subject filter is case-sensitive and event subjects differ in case -> Option D
  4. Quick Check:

    Subject filters are case-sensitive = D [OK]
Hint: Remember filters are case-sensitive in Event Grid [OK]
Common Mistakes:
  • Assuming filters ignore case
  • Blaming JSON syntax without checking
  • Ignoring subscription status
5. You want to create an Event Grid subscription that only receives events of type Microsoft.Storage.BlobCreated where the blob is in the container named images. Which filter configuration achieves this?
hard
A. { "eventType": "Microsoft.Storage.BlobDeleted", "subjectBeginsWith": "/blobServices/default/containers/images/" }
B. { "eventType": "Microsoft.Storage.BlobCreated", "subjectBeginsWith": "/blobServices/default/containers/images/" }
C. { "eventType": "Microsoft.Storage.BlobCreated", "subjectEndsWith": "/images" }
D. { "eventType": "Microsoft.Storage.BlobCreated" }

Solution

  1. Step 1: Filter by event type

    The event type must be exactly "Microsoft.Storage.BlobCreated" to get blob creation events.
  2. Step 2: Filter by subject prefix for container

    The subject prefix for blobs in the "images" container is "/blobServices/default/containers/images/".
  3. Step 3: Combine filters correctly

    { "eventType": "Microsoft.Storage.BlobCreated", "subjectBeginsWith": "/blobServices/default/containers/images/" } combines both eventType and subjectBeginsWith correctly.
  4. Final Answer:

    { "eventType": "Microsoft.Storage.BlobCreated", "subjectBeginsWith": "/blobServices/default/containers/images/" } -> Option B
  5. Quick Check:

    Event type and subject prefix filter combined = C [OK]
Hint: Combine eventType and subjectBeginsWith for precise filtering [OK]
Common Mistakes:
  • Using wrong event type
  • Using subjectEndsWith instead of subjectBeginsWith
  • Omitting container path in subject filter