Bird
Raised Fist0
Azurecloud~5 mins

Event Grid vs Service Bus decision in Azure - CLI Comparison

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
Introduction
When building cloud apps, you often need to send messages or events between parts of your system. Azure Event Grid and Azure Service Bus are two tools that help with this, but they work differently and fit different needs.
When you want to react quickly to changes like file uploads or database updates, use Event Grid.
When you need to send messages reliably between different parts of your app with guaranteed delivery, use Service Bus.
When you want to connect many different services with simple event notifications, Event Grid is a good choice.
When you need to process messages in order or handle complex workflows, Service Bus is better.
When you want a simple publish-subscribe model for events, Event Grid works well.
Commands
This command creates an Event Grid topic where events can be sent and subscribers can listen for those events.
Terminal
az eventgrid topic create --name example-topic --resource-group example-rg --location eastus
Expected OutputExpected
{ "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-rg/providers/Microsoft.EventGrid/topics/example-topic", "location": "eastus", "name": "example-topic", "resourceGroup": "example-rg", "type": "Microsoft.EventGrid/topics" }
→
--name - Sets the name of the Event Grid topic
→
--resource-group - Specifies the resource group to create the topic in
→
--location - Sets the Azure region for the topic
This command creates a Service Bus namespace, which is a container for queues and topics for messaging.
Terminal
az servicebus namespace create --name example-namespace --resource-group example-rg --location eastus
Expected OutputExpected
{ "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-rg/providers/Microsoft.ServiceBus/namespaces/example-namespace", "location": "eastus", "name": "example-namespace", "resourceGroup": "example-rg", "type": "Microsoft.ServiceBus/namespaces" }
→
--name - Sets the name of the Service Bus namespace
→
--resource-group - Specifies the resource group to create the namespace in
→
--location - Sets the Azure region for the namespace
This command creates a subscription to the Event Grid topic so that events are sent to the specified endpoint.
Terminal
az eventgrid event-subscription create --name example-subscription --source-resource-id /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-rg/providers/Microsoft.EventGrid/topics/example-topic --endpoint https://myapp.azurewebsites.net/api/events
Expected OutputExpected
{ "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-rg/providers/Microsoft.EventGrid/topics/example-topic/eventSubscriptions/example-subscription", "name": "example-subscription", "provisioningState": "Succeeded", "type": "Microsoft.EventGrid/topics/eventSubscriptions" }
→
--name - Sets the name of the event subscription
→
--source-resource-id - Specifies the Event Grid topic to subscribe to
→
--endpoint - Sets the URL where events will be delivered
This command creates a queue inside the Service Bus namespace where messages can be sent and received.
Terminal
az servicebus queue create --name example-queue --namespace-name example-namespace --resource-group example-rg
Expected OutputExpected
{ "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/example-rg/providers/Microsoft.ServiceBus/namespaces/example-namespace/queues/example-queue", "name": "example-queue", "resourceGroup": "example-rg", "type": "Microsoft.ServiceBus/namespaces/queues" }
→
--name - Sets the name of the queue
→
--namespace-name - Specifies the Service Bus namespace
→
--resource-group - Specifies the resource group
Key Concept

If you remember nothing else from this pattern, remember: Event Grid is for lightweight event notifications, and Service Bus is for reliable message delivery with advanced features.

Common Mistakes
Using Event Grid when message order and guaranteed delivery are required
Event Grid does not guarantee message order or delivery, which can cause lost or out-of-order messages
Use Service Bus queues or topics when you need ordered and reliable message processing
Using Service Bus for simple event notifications without needing advanced features
Service Bus adds complexity and cost when simple event routing would suffice
Use Event Grid for simple event-driven scenarios with many subscribers
Summary
Create an Event Grid topic to send and receive lightweight events.
Create a Service Bus namespace and queue for reliable message delivery.
Subscribe to Event Grid topics to react to events via endpoints.
Choose Event Grid for simple event notifications and Service Bus for guaranteed message handling.

Practice

(1/5)
1. Which Azure service is best suited for lightweight, event-driven notifications that require minimal setup?
easy
A. Service Bus
B. Azure Functions
C. Event Grid
D. Azure Logic Apps

Solution

  1. Step 1: Understand the purpose of Event Grid

    Event Grid is designed for lightweight, event-driven notifications with simple event routing.
  2. Step 2: Compare with Service Bus

    Service Bus is more complex and used for reliable, ordered messaging, not just simple notifications.
  3. Final Answer:

    Event Grid -> Option C
  4. Quick Check:

    Lightweight event notifications = Event Grid [OK]
Hint: Lightweight events? Think Event Grid first. [OK]
Common Mistakes:
  • Confusing Service Bus with Event Grid for simple notifications
  • Choosing Azure Functions or Logic Apps as messaging services
2. Which of the following is the correct way to create a Service Bus queue using Azure CLI?
easy
A. az servicebus queue create --resource-group MyGroup --namespace-name MyNamespace --name MyQueue
B. az eventgrid queue create --resource-group MyGroup --name MyQueue
C. az servicebus topic create --resource-group MyGroup --name MyQueue
D. az storage queue create --resource-group MyGroup --name MyQueue

Solution

  1. Step 1: Identify the correct Azure CLI command for Service Bus queue

    The command to create a Service Bus queue includes 'az servicebus queue create' with resource group, namespace, and queue name.
  2. Step 2: Eliminate incorrect commands

    Options B and D refer to Event Grid and Storage queues, not Service Bus. az servicebus topic create --resource-group MyGroup --name MyQueue creates a topic, not a queue.
  3. Final Answer:

    az servicebus queue create --resource-group MyGroup --namespace-name MyNamespace --name MyQueue -> Option A
  4. Quick Check:

    Service Bus queue creation uses 'az servicebus queue create' [OK]
Hint: Service Bus queue uses 'az servicebus queue create' command. [OK]
Common Mistakes:
  • Using Event Grid or Storage queue commands for Service Bus
  • Confusing topics with queues in Service Bus
3. Given the following scenario: An application needs to process messages in order and guarantee delivery even if the receiver is temporarily offline. Which Azure service behavior matches this requirement?
medium
A. Service Bus queues guarantee ordered delivery and support message retries.
B. Service Bus does not support message ordering.
C. Event Grid stores messages until the receiver is online.
D. Event Grid delivers events immediately but does not guarantee order or retries.

Solution

  1. Step 1: Analyze delivery guarantees needed

    The app needs ordered delivery and guaranteed processing even if offline, which requires message durability and retries.
  2. Step 2: Match with service features

    Service Bus queues support ordered delivery and message retries, ensuring reliable processing.
  3. Final Answer:

    Service Bus queues guarantee ordered delivery and support message retries. -> Option A
  4. Quick Check:

    Ordered, reliable delivery = Service Bus queues [OK]
Hint: Ordered, reliable messages? Choose Service Bus queues. [OK]
Common Mistakes:
  • Assuming Event Grid guarantees order and retries
  • Believing Service Bus lacks ordering support
4. You have an Event Grid subscription that is not receiving events as expected. Which of the following is the most likely cause?
medium
A. The Service Bus topic is not configured with sessions.
B. The Service Bus queue is full and blocking events.
C. The Event Grid topic does not support message ordering.
D. The Event Grid subscription endpoint URL is incorrect or unreachable.

Solution

  1. Step 1: Identify common Event Grid delivery issues

    Event Grid requires a valid, reachable endpoint URL for subscriptions to receive events.
  2. Step 2: Eliminate unrelated causes

    Service Bus queue full or topic session settings do not affect Event Grid subscriptions directly.
  3. Final Answer:

    The Event Grid subscription endpoint URL is incorrect or unreachable. -> Option D
  4. Quick Check:

    Event Grid needs reachable endpoint URL [OK]
Hint: Check endpoint URL if Event Grid events don't arrive. [OK]
Common Mistakes:
  • Blaming Service Bus settings for Event Grid issues
  • Ignoring endpoint URL correctness
5. A company wants to build a system that processes thousands of events per second with minimal latency, but also requires guaranteed message delivery and ordering for critical workflows. Which combination of Azure services should they use?
hard
A. Use Event Grid for all events because it is fast and supports guaranteed ordering.
B. Use Event Grid for high-volume lightweight events and Service Bus for critical ordered workflows.
C. Use Service Bus for all events because it supports ordering but may have higher latency.
D. Use Azure Storage Queues for all messaging needs.

Solution

  1. Step 1: Analyze requirements for speed and reliability

    The system needs both high throughput with low latency and guaranteed delivery with ordering for some workflows.
  2. Step 2: Match services to needs

    Event Grid handles high-volume, lightweight events quickly but lacks ordering guarantees. Service Bus supports ordering and reliability but with some latency.
  3. Step 3: Combine services for best fit

    Using Event Grid for fast, lightweight events and Service Bus for critical ordered workflows balances speed and reliability.
  4. Final Answer:

    Use Event Grid for high-volume lightweight events and Service Bus for critical ordered workflows. -> Option B
  5. Quick Check:

    Mix Event Grid speed + Service Bus reliability [OK]
Hint: Combine Event Grid speed with Service Bus reliability. [OK]
Common Mistakes:
  • Expecting Event Grid to guarantee ordering
  • Using only Service Bus and ignoring latency needs
  • Choosing Storage Queues which lack advanced features