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
Service Bus Topics and Subscriptions Setup
📖 Scenario: You are building a messaging system in Azure where multiple services need to receive messages independently. You will use Azure Service Bus topics and subscriptions to distribute messages to different receivers.
🎯 Goal: Create an Azure Service Bus topic and two subscriptions with specific filters to route messages based on their properties.
📋 What You'll Learn
Create a Service Bus topic named orders
Create two subscriptions named highPriority and lowPriority
Add a filter to highPriority subscription to receive messages where priority property equals high
Add a filter to lowPriority subscription to receive messages where priority property equals low
💡 Why This Matters
🌍 Real World
Service Bus topics and subscriptions help distribute messages to multiple independent receivers in cloud applications.
💼 Career
Understanding how to configure topics and subscriptions with filters is essential for cloud engineers working with Azure messaging services.
Progress0 / 4 steps
1
Create the Service Bus topic
Create a variable called topic_name and set it to the string "orders" to represent the Service Bus topic name.
Azure
Hint
Use a simple string assignment to create the topic name variable.
2
Define subscription names
Create two variables called subscription_high and subscription_low with values "highPriority" and "lowPriority" respectively to represent subscription names.
Azure
Hint
Assign the exact string values to the subscription variables.
3
Create filters for subscriptions
Create two variables called filter_high and filter_low with values "priority = 'high'" and "priority = 'low'" respectively to represent SQL filters for the subscriptions.
Azure
Hint
Use SQL-like syntax strings to define the filters exactly as shown.
4
Define the subscription creation commands
Create two variables called create_subscription_high and create_subscription_low that hold the Azure CLI commands as strings to create the subscriptions highPriority and lowPriority on the topic orders with their respective filters filter_high and filter_low. Use the format: az servicebus topic subscription create --resource-group MyResourceGroup --namespace-name MyNamespace --topic-name orders --name subscription_name --rule-name priorityFilter --filter-filter_expression where filter_expression is the filter string.
Azure
Hint
Use escaped quotes for the filter expressions inside the command strings exactly as shown.
Practice
(1/5)
1. What is the main purpose of an Azure Service Bus topic?
easy
A. To send messages to multiple receivers using subscriptions
B. To store data permanently like a database
C. To host web applications
D. To manage virtual machines
Solution
Step 1: Understand the role of a Service Bus topic
A Service Bus topic acts as a message distributor that sends messages to multiple receivers.
Step 2: Compare other options
Options B, C, and D describe unrelated Azure services or functions.
Final Answer:
To send messages to multiple receivers using subscriptions -> Option A
Quick Check:
Service Bus topic = message distribution [OK]
Hint: Topics distribute messages to many receivers via subscriptions [OK]
Common Mistakes:
Confusing topics with queues
Thinking topics store data permanently
Mixing topics with compute services
2. Which of the following is the correct way to create a subscription under a topic using Azure CLI?
easy
A. az servicebus topic create --resource-group MyGroup --namespace-name MyNamespace --subscription-name MySubscription --name MyTopic
B. az servicebus subscription create --resource-group MyGroup --namespace-name MyNamespace --topic-name MyTopic --name MySubscription
C. az servicebus topic subscription create --resource-group MyGroup --namespace-name MyNamespace --topic-name MyTopic --name MySubscription
D. az servicebus create subscription --resource-group MyGroup --namespace-name MyNamespace --topic MyTopic --subscription MySubscription
Solution
Step 1: Identify the correct Azure CLI command structure
The correct command to create a subscription under a topic is 'az servicebus subscription create' with required parameters.
Step 2: Check parameters and order
az servicebus subscription create --resource-group MyGroup --namespace-name MyNamespace --topic-name MyTopic --name MySubscription uses the correct command and parameters: resource group, namespace, topic name, and subscription name.
Final Answer:
az servicebus subscription create --resource-group MyGroup --namespace-name MyNamespace --topic-name MyTopic --name MySubscription -> Option B
Hint: Use 'az servicebus subscription create' to add subscriptions [OK]
Common Mistakes:
Using 'az servicebus topic create' for subscriptions
Using invalid 'az servicebus topic subscription create'
Incorrect command verbs or missing flags
3. Given the following code snippet, what will be the output?
from azure.servicebus import ServiceBusClient
connection_str = "Endpoint=sb://example.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=key"
topic_name = "mytopic"
subscription_name = "mysubscription"
with ServiceBusClient.from_connection_string(connection_str) as client:
receiver = client.get_subscription_receiver(topic_name, subscription_name)
with receiver:
messages = receiver.receive_messages(max_message_count=2, max_wait_time=5)
print(len(list(messages)))
medium
A. 2
B. The code will not compile
C. An exception is raised due to missing message processing
D. 0
Solution
Step 1: Understand message receiving behavior
The code tries to receive up to 2 messages with a 5-second wait. If no messages are available, it returns an empty list.
Step 2: Analyze message processing
Since no messages are explicitly sent before receiving, the list will be empty, so len(messages) is 0.
Final Answer:
0 -> Option D
Quick Check:
Receive without sent messages = 0 [OK]
Hint: Receiving messages without sending returns empty list [OK]
Common Mistakes:
Assuming messages exist without sending
Expecting exceptions for no messages
Confusing receive_messages with peek_messages
4. You have created a subscription but messages are not being received. Which of the following is the most likely cause?
medium
A. The subscription filter is set to exclude all messages
B. The topic does not exist
C. The subscription name is too long
D. The Service Bus namespace is in a different region
Solution
Step 1: Check subscription filters
If a subscription filter excludes all messages, no messages will be received even if the topic and subscription exist.
Step 2: Evaluate other options
The topic does not exist would prevent subscription creation; The subscription name is too long would cause an error; The Service Bus namespace is in a different region does not block message reception.
Final Answer:
The subscription filter is set to exclude all messages -> Option A
Quick Check:
Filter excluding messages = no messages received [OK]
Hint: Check subscription filters if no messages arrive [OK]
Common Mistakes:
Ignoring filters when troubleshooting
Assuming region mismatch blocks messages
Overlooking subscription existence
5. You want to ensure high availability and ordered message processing in your Service Bus topic subscriptions. Which configuration should you apply?
hard
A. Use multiple topics instead of subscriptions
B. Disable partitioning and use duplicate detection only
C. Enable partitioning on the topic and use sessions on subscriptions
D. Enable auto-delete on subscriptions after 1 hour
Solution
Step 1: Understand partitioning and sessions
Partitioning improves availability by spreading messages across nodes. Sessions enable ordered processing by grouping related messages.