You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询Azure Service Bus队列会话启用状态(含编程实现)

嘿,我来帮你搞定这两个关于Azure Service Bus队列会话状态的问题!

确认Azure Service Bus队列是否启用会话

你可以通过两种方式来确认:手动在Azure门户查看,或者通过代码编程查询。

一、手动确认(Azure门户操作)

这是最直观的方式:

  • 登录Azure门户,找到你的Service Bus命名空间
  • 进入左侧菜单的「队列」列表,点击你要检查的目标队列
  • 在队列详情页的属性标签里,找到「会话」选项,就能看到它是“启用”还是“禁用”状态了(部分环境里也会标注为Requires Session)

二、编程方式查询会话状态

如果你需要自动化查询,不管是C#还是PowerShell都能轻松实现,下面给你具体代码示例:

1. C# 实现(推荐使用最新SDK)

现在Azure官方推荐使用Azure.Messaging.ServiceBus系列SDK,旧的Microsoft.Azure.ServiceBus已被弃用。首先你需要安装对应的NuGet包:

Install-Package Azure.Messaging.ServiceBus.Administration

然后编写代码:

using Azure.Messaging.ServiceBus.Administration;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 替换成你的Service Bus连接字符串和队列名称
        string serviceBusConnectionString = "你的Service Bus连接字符串";
        string queueName = "目标队列名称";

        // 创建管理客户端
        var adminClient = new ServiceBusAdministrationClient(serviceBusConnectionString);

        try
        {
            // 获取队列的属性详情
            var queueProperties = await adminClient.GetQueueAsync(queueName);
            
            // RequiresSession属性就是会话启用状态,true表示已启用
            bool isSessionEnabled = queueProperties.RequiresSession;
            
            Console.WriteLine($"队列「{queueName}」的会话启用状态:{(isSessionEnabled ? "已启用" : "未启用")}");
        }
        catch (ServiceBusException ex)
        {
            Console.WriteLine($"查询失败:{ex.Message}");
        }
    }
}

如果你还在使用旧版SDK(不推荐长期使用),也可以这样写:

using Microsoft.Azure.ServiceBus.Management;
using System;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        string connectionString = "你的Service Bus连接字符串";
        string queueName = "目标队列名称";

        var managementClient = new ManagementClient(connectionString);
        var queueDescription = await managementClient.GetQueueAsync(queueName);
        
        bool isSessionEnabled = queueDescription.RequiresSession;
        Console.WriteLine($"队列「{queueName}」的会话启用状态:{(isSessionEnabled ? "已启用" : "未启用")}");
    }
}

2. PowerShell 实现

使用Azure PowerShell的Az.ServiceBus模块就能完成查询,先确保安装模块(如果没装过的话):

Install-Module -Name Az.ServiceBus -Force -AllowClobber

然后编写脚本:

# 替换成你的资源组、命名空间和队列名称
$resourceGroupName = "你的资源组名称"
$namespaceName = "你的Service Bus命名空间名称"
$queueName = "目标队列名称"

# 若未登录Azure,先执行以下命令登录
# Connect-AzAccount

# 获取队列属性
$queue = Get-AzServiceBusQueue -ResourceGroupName $resourceGroupName -NamespaceName $namespaceName -Name $queueName

# 输出会话启用状态
Write-Host "队列「$queueName」的会话启用状态:$($queue.RequiresSession ? '已启用' : '未启用')"

这样不管是手动还是编程方式,都能快速确认队列的会话启用状态啦!

内容的提问来源于stack exchange,提问作者Narayana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:31:34