Namespaces & Queues in Azure Service Bus

What Is a Namespace?

A namespace is a container for all messaging components in Azure Service Bus. Think of it as a top-level folder that holds your queues and topics - it provides a logical boundary for your messaging infrastructure and defines the endpoint through which your applications connect. Every Service Bus resource (queues, topics, subscriptions) must belong to a namespace.

What You'll Learn

  • Understanding Service Bus namespaces and their role
  • Creating a namespace in Azure
  • Creating and configuring queues
  • Understanding key queue properties like TTL, lock duration, and max delivery
  • Best practices for naming and configuring queues

Why Namespaces Matter

Namespaces serve as the foundation for your messaging architecture:

  • Isolation - Separate namespaces for different applications or environments
  • Connection endpoint - Provides the connection string for your applications
  • Management - Group related messaging components together
  • Billing - Namespace-level pricing and tier selection
Service Bus Namespace
├── Queues
│   ├── order-queue
│   └── notification-queue
└── Topics
    ├── orders-topic
    └── events-topic

Create a Namespace

Via Portal

  1. Search "Service Bus namespaces" in Azure Portal
  2. Click Create
  3. Configure:
    • Name: unique namespace (e.g., myapp-servicebus)
    • Pricing tier: Basic, Standard, or Premium
    • Subscription: Your Azure subscription
    • Resource Group: Create or select existing
    • Location: Choose region
  4. Click Create

Via CLI

az servicebus namespace create \
  --resource-group myrg \
  --name myapp-servicebus \
  --location eastus \
  --sku Standard

Create a Queue

Via Portal

  1. Go to your Service Bus namespace
  2. Click Queues in left menu
  3. Click + Queue
  4. Configure:
    • Name: order-queue
    • Max size: 1 GB, 2 GB, 5 GB, 10 GB, or 20 GB
    • Message TTL: Default 1 minute (set to -1 for never)
    • Lock duration: Default 30 seconds
  5. Click Create

Via CLI

az servicebus queue create \
  --resource-group myrg \
  --namespace-name myapp-servicebus \
  --name order-queue \
  --max-size 1024 \
  --default-message-time-to-live P1D \
  --lock-duration PT30S

Queue Properties

PropertyDescriptionDefault
NameUnique identifierRequired
Max SizeMaximum queue size1 GB
Message TTLTime before message expires1 minute
Lock DurationTime message stays locked30 seconds
Max DeliveryTimes message can be delivered10
Dead LetterWhere failed messages goDisabled

Queue Properties Explained

Message TTL (Time To Live)

  • How long message lives before being deleted
  • Can be overridden per message
  • Set to -1 for infinite

Lock Duration

  • When consumer receives message, it's "locked"
  • Consumer has this time to process
  • If not completed, message returns to queue

Max Delivery Count

  • How many times a message can be delivered
  • After exceeded, goes to Dead Letter Queue

Best Practices

  1. Use descriptive names: order-processing-queue, not queue1
  2. Set appropriate TTL: Don't keep messages forever
  3. Monitor queue length: Alert if growing too large
  4. Use dead-letter queue: Capture failed messages

Next Steps


Azure Integration Hub - Beginner Level