如何检查Azure Service Bus是否具有高级定价

时间:2017-08-31 06:16:11

标签: azure azure-servicebus-topics

在我的一个Azure Web应用程序中,如果在Azure Web App的预热(启动)期间尚未存在Azure主题,我会创建一个Azure主题。

关于主题创建时间我想知道服务总线是否具有高级定价层,当我想要禁用快递时,如果没有(标准定价层)我想启用快递,以防止例外。

是否有防御方法来检查服务总线上是否有可用的定价等级(例如:使用服务总线连接字符串)?

当没有防御方式时,我总能捕捉到知道加注的网络异常,但如果可以,我想阻止异常。

编辑:在咨询我们的Lead-dev之后,我们决定在DTAP中完全跳过EnableExpress设置。所以我根本不需要实施SKU检查。请注意不要设置EnableExpress属性,否则您会在Premium SKU中获得webexception。

2 个答案:

答案 0 :(得分:1)

  

是否有防御方法来检查是否有高级定价等级   可在服务总线上使用(例如:使用服务总线   连接字符串)?

不幸的是今天没有。 Service Bus Client SDK不会公开此信息。服务总线团队已经询问了这个功能,Github上有一个未解决的问题:https://github.com/Azure/azure-service-bus/issues/42

此处突出显示PremiumStandard层之间的差异:https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-premium-messaging。一种反模式,但你可以做的一件事是只在Premium层中可用的执行和操作(比如发送大小超过256KB的消息)并捕获异常(或缺少)以确定是否Service Bus层是否为Premium。

答案 1 :(得分:0)

如果我们要检查Azure Service Bus定价层,我们可以将以下代码与Microsoft.Azure.Management.Fluent SDK一起使用。

 var credentials = SdkContext.AzureCredentialsFactory.FromFile(@"c:\tom\azureCredential.txt");
 var azure = Azure
            .Configure()
            .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
            .Authenticate(credentials)
            .WithDefaultSubscription();

 var serviceBus =  azure.ServiceBusNamespaces.GetByResourceGroup("resourcegroup", "servicebusnamespace");
 var priceTier = serviceBus.Sku.Tier;

enter image description here

在代码之前,我们需要create an azure active directory application并分配correspondent role。我们可以在document之后创建azure凭证文件。以下是凭证文件格式。

subscription=########-####-####-####-############
client=########-####-####-####-############
tenant=########-####-####-####-############
key=XXXXXXXXXXXXXXXX
managementURI=https\://management.core.windows.net/
baseURL=https\://management.azure.com/
authURL=https\://login.windows.net/
graphURL=https\://graph.windows.net/