在我的一个Azure Web应用程序中,如果在Azure Web App的预热(启动)期间尚未存在Azure主题,我会创建一个Azure主题。
关于主题创建时间我想知道服务总线是否具有高级定价层,当我想要禁用快递时,如果没有(标准定价层)我想启用快递,以防止例外。
是否有防御方法来检查服务总线上是否有可用的定价等级(例如:使用服务总线连接字符串)?
当没有防御方式时,我总能捕捉到知道加注的网络异常,但如果可以,我想阻止异常。
编辑:在咨询我们的Lead-dev之后,我们决定在DTAP中完全跳过EnableExpress设置。所以我根本不需要实施SKU检查。请注意不要设置EnableExpress属性,否则您会在Premium SKU中获得webexception。
答案 0 :(得分:1)
是否有防御方法来检查是否有高级定价等级 可在服务总线上使用(例如:使用服务总线 连接字符串)?
不幸的是今天没有。 Service Bus Client SDK不会公开此信息。服务总线团队已经询问了这个功能,Github上有一个未解决的问题:https://github.com/Azure/azure-service-bus/issues/42。
此处突出显示Premium
和Standard
层之间的差异: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;
在代码之前,我们需要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/