【问题标题】:How to check if a Azure Service Bus has Premium Pricing如何检查 Azure 服务总线是否具有高级定价
【发布时间】:2017-08-31 06:16:10
【问题描述】:

在我的一个 Azure Web 应用程序中,我在 Azure Web 应用程序的预热(启动)期间创建了一个 Azure 主题。

关于主题创建时间我想知道服务总线是否有高级定价层,什么时候我想禁用 express,如果没有(标准定价层)我想启用 express,以防止异常。

是否有一种防御方法来检查服务总线上是否存在溢价定价层(例如:使用服务总线连接字符串)?

当没有防御方法时,我总是可以捕捉到知道引发的网络异常,但如果可以的话,我想阻止该异常。

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

【问题讨论】:

  • 您要查看服务总线 sku 吗?如果是这种情况,我们可以使用 SDK 获得服务总线价格层。
  • @TomSun:“我们可以通过 SDK 获得服务总线价格层”是什么意思
  • 我们可以使用Microsoft.Azure.Management.Fluent SDK 获得服务总线价格等级。我已经更新了答案中的代码。

标签: azure azure-servicebus-topics


【解决方案1】:

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

很遗憾,今天还没有。服务总线客户端 SDK 不公开此信息。 Service Bus 团队已向该功能提出要求,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 的消息)并捕获异常(或缺少)以确定服务是否巴士等级是否为高级。

【讨论】:

  • 最后一个动作是创建主题/队列并捕获 webexception 并在 EnableExpress 明确为 false 的情况下执行重试。
  • 是的,你可以这样做。但是在这种情况下,如果没有例外,您最终会得到很多主题/队列。使用消息,您可以将消息的 TTL 设置为非常低,以便该消息在发送到队列/主题后立即被删除,以防万一。
【解决方案2】:

如果我们想检查 Azure 服务总线定价层,我们可以将以下代码与 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/

【讨论】:

  • Tom .... 您可能想在回答中提到您使用的 Azure Management Fluent 库与 Azure 服务总线 SDK 不同,并且您的代码使用 ARM API 来获取此信息.
猜你喜欢
  • 2018-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
相关资源
最近更新 更多