显示 Azure 服务总线主题筛选器

Show Azure Service Bus Topic Filters

我正在学习有关使用 Azure PaaS 的精彩教程,并提出了一个问题。 这是教程,如果它可以帮助其他人(对我来说非常有用) https://youtu.be/ScJ4VxOmNGs

除了编写 C# 程序之外,还有其他方法可以检查在服务总线主题订阅规则上设置了哪些过滤器吗?

我能做到:

var rules = await processPaymentInventoryCheckedClient.GetRulesAsync();

并以这种方式访问​​它们,但是有没有办法使用 CLI 或 Powershell? 我知道截至本 post 发布之日,您无法在门户中执行此操作。

我尝试使用 Service Bus Explorer,它显示规则但不显示过滤器:

顺便说一句,SBE 很棒,如果你没有用过它,它会非常有用: https://github.com/paolosalvatori/ServiceBusExplorer

如果我 运行 上面的 C# 代码然后深入到属性我可以验证确实应用了过滤器:

谢谢 --

关于 ServiceBus Explorer - 这是一个错误。该工具目前仅显示 SqlFilters 而不是 CorrelationFilters。我提出了 issue 以添加对 CorrelationFilters 的支持。

要列出所有过滤器,您可以使用以下带有 free version of the tool 的 LinqPad 脚本:

var connectionString = "<asb-connection-string>";
var topicPath = "<topic-path>";
var subName = "<subscription-name>";
var nsm = NamespaceManager.CreateFromConnectionString(connectionString);

foreach (RuleDescription rule in await nsm.GetRulesAsync(topicPath,subName))
{
  if (rule.Filter is SqlFilter)
  {
    $"Rule: Name = {rule.Name} - 
        SqlExpression = {(rule.Filter as SqlFilter).SqlExpression}".Dump();
  }

  if (rule.Filter is CorrelationFilter)
  {
    $"Rule: Name = {rule.Name} - Correlate = {(rule.Filter as
        CorrelationFilter)}".Dump();
  }
}