| title | Enable Azure Service Bus message sessions | Microsoft Docs |
|---|---|
| description | This article explains how to enable message sessions using Azure portal, PowerShell, CLI, and programming languages (C#, Java, Python, and JavaScript) |
| ms.topic | how-to |
| ms.date | 04/19/2021 |
| ms.custom | devx-track-azurepowershell, devx-track-azurecli, devx-track-arm-template, devx-track-python |
| ms.devlang | azurecli |
Azure Service Bus sessions enable joint and ordered handling of unbounded sequences of related messages. Sessions can be used in first in, first out (FIFO) and request-response patterns. For more information, See Message sessions. This article shows you different ways to enable sessions for a Service Bus queue or subscription.
Important
- The basic tier of Service Bus doesn't support sessions. The standard and premium tiers support sessions. For differences between these tiers, see Service Bus pricing.
- You can't enable or disable message sessions after the queue or subscription is created. You can only do so at the time of creating the queue or subscription.
When creating a queue in the Azure portal, select Enable sessions as shown in the following image.
:::image type="content" source="./media/message-sessions/queue-sessions.png" alt-text="Enable session at the time of the queue creation":::
When creating a subscription for a topic in the Azure portal, select Enable sessions as shown in the following image.
:::image type="content" source="./media/message-sessions/subscription-sessions.png" alt-text="Enable session at the time of the subscription creation":::
To create a queue with message sessions enabled, use the az servicebus queue create command with --enable-session set to true.
az servicebus queue create \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--name myqueue \
--enable-session true
To create a subscription for a topic with message sessions enabled, use the az servicebus topic subscription create command with --enable-session set to true.
az servicebus topic subscription create \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--topic-name mytopic \
--name mysubscription \
--enable-session true
To create a queue with message sessions enabled, use the New-AzServiceBusQueue command with -RequiresSession set to $True.
New-AzServiceBusQueue -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-QueueName myqueue `
-RequiresSession $True
To create a subscription for a topic with message sessions enabled, use the New-AzServiceBusSubscription command with -RequiresSession set to true.
New-AzServiceBusSubscription -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-TopicName mytopic `
-SubscriptionName mysubscription `
-RequiresSession $True
To create a queue with message sessions enabled, set requiresSession to true in the queue properties section. For more information, see Microsoft.ServiceBus namespaces/queues template reference.
@description('Name of the Service Bus namespace')
param serviceBusNamespaceName string
@description('Name of the Queue')
param serviceBusQueueName string
@description('Location for all resources.')
param location string = resourceGroup().location
resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2024-01-01' = {
name: serviceBusNamespaceName
location: location
sku: {
name: 'Standard'
}
resource queue 'queues' = {
name: serviceBusQueueName
properties: {
requiresSession: true
}
}
}{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"serviceBusNamespaceName": {
"type": "string",
"metadata": {
"description": "Name of the Service Bus namespace"
}
},
"serviceBusQueueName": {
"type": "string",
"metadata": {
"description": "Name of the Queue"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"resources": [
{
"type": "Microsoft.ServiceBus/namespaces",
"apiVersion": "2024-01-01",
"name": "[parameters('serviceBusNamespaceName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"resources": [
{
"type": "queues",
"apiVersion": "2024-01-01",
"name": "[parameters('serviceBusQueueName')]",
"dependsOn": [
"[parameters('serviceBusNamespaceName')]"
],
"properties": {
"requiresSession": true
}
}
]
}
]
}To create a subscription for a topic with message sessions enabled, set requiresSession to true in the subscription properties section. For more information, see Microsoft.ServiceBus namespaces/topics/subscriptions template reference.
@description('Name of the Service Bus namespace')
param serviceBusNamespaceName string
@description('Name of the Topic')
param serviceBusTopicName string
@description('Name of the Subscription')
param serviceBusSubscriptionName string
@description('Location for all resources.')
param location string = resourceGroup().location
resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2024-01-01' = {
name: serviceBusNamespaceName
location: location
sku: {
name: 'Standard'
}
resource topic 'topics' = {
name: serviceBusTopicName
properties: {
maxSizeInMegabytes: 1024
}
resource subscription 'subscriptions' = {
name: serviceBusSubscriptionName
properties: {
requiresSession: true
}
}
}
}{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"serviceBusNamespaceName": {
"type": "string",
"metadata": {
"description": "Name of the Service Bus namespace"
}
},
"serviceBusTopicName": {
"type": "string",
"metadata": {
"description": "Name of the Topic"
}
},
"serviceBusSubscriptionName": {
"type": "string",
"metadata": {
"description": "Name of the Subscription"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"resources": [
{
"type": "Microsoft.ServiceBus/namespaces",
"apiVersion": "2024-01-01",
"name": "[parameters('serviceBusNamespaceName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"resources": [
{
"type": "topics",
"apiVersion": "2024-01-01",
"name": "[parameters('serviceBusTopicName')]",
"dependsOn": [
"[parameters('serviceBusNamespaceName')]"
],
"properties": {
"maxSizeInMegabytes": 1024
},
"resources": [
{
"type": "subscriptions",
"apiVersion": "2024-01-01",
"name": "[parameters('serviceBusSubscriptionName')]",
"dependsOn": [
"[parameters('serviceBusTopicName')]"
],
"properties": {
"requiresSession": true
}
}
]
}
]
}
]
}Try the samples in the language of your choice to explore Azure Service Bus features.
- Azure Service Bus client library samples for .NET (latest)
- Azure Service Bus client library samples for Java (latest)
- Azure Service Bus client library samples for Python
- Azure Service Bus client library samples for JavaScript
- Azure Service Bus client library samples for TypeScript
Find samples for the older .NET and Java client libraries below: