我正在尝试过滤来自 ASB 的消息,以便仅显示具有特定值的特定属性的消息。我不确定这是否不可能,或者我的语法是否不正确。
这是我设置过滤器的方法:
var ruleDescriptions = rules as RuleDescription[] ?? rules.ToArray();
var filter = new SqlFilter("PropertyName='PropertyValue'");
if (ruleDescriptions.All(x=>x.Filter != filter))
{
_client.AddRule("FilterName", filter);
}
本例中的值是一个字符串。当我运行此命令时,我收到具有该属性的所有不同值的事件。
我也尝试了同样的操作,但 PropertyValue 周围没有单引号,但没有成功。如何设置此过滤器?
最佳答案
经过进一步研究,我意识到我需要使用以下内容删除默认过滤器:
if (ruleDescriptions.Any(ruleDescription => ruleDescription.Name == "$Default"))
{
_client.RemoveRule("$Default");
}
如果没有同时添加其他规则,则会在创建订阅时添加此默认规则。在这种情况下,我不是我订阅的主题的所有者,并且订阅是为我创建的。因此,“$Default”规则已添加并拾取所有消息。
添加此内容后,上述过滤器按预期工作 - 仅接收基于指定 PropertyValue 的消息。
关于c# - Azure 服务总线属性筛选器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27495569/