【问题标题】:Show Azure Service Bus Topic Filters显示 Azure 服务总线主题筛选器
【发布时间】:2018-03-25 02:50:35
【问题描述】:

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

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

我可以这样做:

var rules = await processPaymentInventoryCheckedClient.GetRulesAsync();

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

我尝试使用服务总线资源管理器,它显示规则但不显示过滤器:

顺便说一句,SBE 很棒,如果您还没有使用它,它会很有帮助: https://github.com/paolosalvatori/ServiceBusExplorer

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

谢谢--

【问题讨论】:

  • 如果您正在寻找查看规则的替代工具,我建议您看看 Cerebrata Cerulean (cerebrata.com/products/cerulean)。它支持查看和管理相同的内容。 i.stack.imgur.com/CgoM1.png [完全披露:我是这个工具背后团队的一员]。
  • 谢谢 Gaurav -- 我会尝试一下。管理 Azure 的工具很有帮助。我仍然想知道是否有某种类型的命令行的方法。
  • 谢谢!我确实简要查看了可用的 Cmdlet,但根据我有限的搜索,我找不到任何东西。

标签: azure azureservicebus azure-servicebus-topics


【解决方案1】:

关于 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();
  }
}

【讨论】:

  • 谢谢肖恩...我希望有 CLI,但这会有所帮助。
  • 我正在用 SBE 解决这个问题。敬请期待。
  • @JoeRuder SBE 的修复程序待定,将在版本 4.0.109 中发布。如果你已经需要了,可以拉下my PR,编译使用。这就是它的样子:imgur.com/a/qz2aI
猜你喜欢
  • 1970-01-01
  • 2017-06-05
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 2016-07-16
  • 2023-02-12
  • 1970-01-01
相关资源
最近更新 更多