为 Azure 服务总线队列或订阅启用消息会话
使用 Azure 服务总线会话,可以连贯有序的方式处理一系列无限多的相关消息。 可以在“先进先出 (FIFO)”和“请求-响应”模式下使用会话。 有关详细信息,请参阅消息会话。 本文介绍为服务总线队列或订阅启用会话的不同方式。
重要
- 服务总线的基本层不支持会话。 标准层和高级层支持会话。 有关这些层之间的差异,请参阅服务总线定价。
- 在创建队列或订阅后,不能启用或禁用消息会话。 只能在创建队列或订阅时执行此操作。
使用 Azure 门户
在 Azure 门户中创建“队列”时,请选择“启用会话”,如下图所示。
在 Azure 门户中为主题创建订阅时,请选择“启用会话”,如下图所示。
使用 Azure CLI
若要创建已启用消息会话的队列,请使用 --enable-session
设置为 true
的 az servicebus queue create
命令。
az servicebus queue create \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--name myqueue \
--enable-session true
若要为已启用消息会话的主题创建订阅,请使用 --enable-session
设置为 true
的 az servicebus topic subscription create
命令。
az servicebus topic subscription create \
--resource-group myresourcegroup \
--namespace-name mynamespace \
--topic-name mytopic \
--name mysubscription \
--enable-session true
使用 Azure PowerShell
若要创建已启用消息会话的队列,请使用 -RequiresSession
设置为 $True
的 New-AzServiceBusQueue
命令。
New-AzServiceBusQueue -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-QueueName myqueue `
-RequiresSession $True
若要为已启用消息会话的主题创建订阅,请使用 -RequiresSession
设置为 true
的 New-AzServiceBusSubscription
命令。
New-AzServiceBusSubscription -ResourceGroup myresourcegroup `
-NamespaceName mynamespace `
-TopicName mytopic `
-SubscriptionName mysubscription `
-RequiresSession $True
使用 Azure 资源管理器模板
若要创建已启用消息会话的队列,请在“队列属性”部分中将 requiresSession
设置为 true
。 有关详细信息,请参阅 Microsoft.ServiceBus 命名空间/队列模板参考。
{
"$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": "2018-01-01-preview",
"name": "[parameters('serviceBusNamespaceName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"properties": {},
"resources": [
{
"type": "Queues",
"apiVersion": "2017-04-01",
"name": "[parameters('serviceBusQueueName')]",
"dependsOn": [
"[resourceId('Microsoft.ServiceBus/namespaces', parameters('serviceBusNamespaceName'))]"
],
"properties": {
"requiresSession": true
}
}
]
}
]
}
若要为已启用消息会话的主题创建订阅,请在“订阅属性”部分中将 requiresSession
设置为 true
。 有关详细信息,请参阅 Microsoft.ServiceBus 命名空间/主题/订阅模板参考。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"service_BusNamespace_Name": {
"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": [
{
"apiVersion": "2018-01-01-preview",
"name": "[parameters('service_BusNamespace_Name')]",
"type": "Microsoft.ServiceBus/namespaces",
"location": "[parameters('location')]",
"sku": {
"name": "Standard"
},
"properties": {},
"resources": [
{
"apiVersion": "2017-04-01",
"name": "[parameters('serviceBusTopicName')]",
"type": "topics",
"dependsOn": [
"[resourceId('Microsoft.ServiceBus/namespaces/', parameters('service_BusNamespace_Name'))]"
],
"properties": {
"maxSizeInMegabytes": 1024
},
"resources": [
{
"apiVersion": "2017-04-01",
"name": "[parameters('serviceBusSubscriptionName')]",
"type": "Subscriptions",
"dependsOn": [
"[parameters('serviceBusTopicName')]"
],
"properties": {
"requiresSession": true
}
}
]
}
]
}
]
}
后续步骤
尝试采用所选语言的示例,了解 Azure 服务总线功能。
- 适用于 .NET(最新)的 Azure 服务总线客户端库示例
- 适用于 Java(最新)的 Azure 服务总线客户端库示例
- 适用于 Python 的 Azure 服务总线客户端库示例
- 适用于 JavaScript 的 Azure 服务总线客户端库示例
- 适用于 TypeScript 的 Azure 服务总线客户端库示例
在下面查找早期 .NET 和 Java 客户端库示例:
注意
2026 年 9 月 30 日,我们将停用 Azure 服务总线 SDK 库 WindowsAzure.ServiceBus、Microsoft.Azure.ServiceBus 和 com.microsoft.azure.servicebus,这些库不符合 Azure SDK 准则。 我们还将结束对 SBMP 协议的支持,因此在 2026 年 9 月 30 日之后,你将无法再使用此协议。 请在该日期之前迁移到最新的 Azure SDK 库,新库提供了关键安全更新和改进功能。
尽管旧库在 2026 年 9 月 30 日之后仍可使用,但它们将不再获得 Azure 的官方支持和更新。 有关详细信息,请参阅支持停用公告。