我正在努力完成使用Azure PaaS的精彩教程,并提出了一个问题。 这是教程,如果它可以帮助其他人(对我来说非常有用) https://youtu.be/ScJ4VxOmNGs
是否有办法编写C#程序来检查服务总线主题订阅规则上设置了哪些过滤器?
我可以这样做:
var rules = await processPaymentInventoryCheckedClient.GetRulesAsync();
以这种方式访问它们,但有没有办法使用CLI或Powershell? 我知道截至本文发布之日,您无法在门户网站上进行此操作。
我尝试使用Service Bus Explorer,它显示规则但不显示过滤器:
SBE非常好btw,非常有用,如果您还没有使用它: https://github.com/paolosalvatori/ServiceBusExplorer
如果我运行上面的C#代码,然后深入查看属性,我可以验证是否确实应用了过滤器:
谢谢 -
乔
答案 0 :(得分:1)
关于ServiceBus Explorer - 这是一个错误。该工具目前仅显示SqlFilter
而非CorrelationFilter
。我已经提出issue来添加对CorrelationFilter
的支持。
要列出所有过滤器,您可以使用以下LinqPad脚本和free version of the tool:
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();
}
}