我正在尝试过滤来自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周围没有单引号但没有成功。如何设置此过滤器?
答案 0 :(得分:1)
经过进一步研究,我意识到我需要删除默认过滤器:
if (ruleDescriptions.Any(ruleDescription => ruleDescription.Name == "$Default"))
{
_client.RemoveRule("$Default");
}
如果在同一时间未添加其他规则,则会在创建订阅时添加此默认规则。在这种情况下,我不是我订阅的主题的所有者,并且为我创建了订阅。因此,' $ Default'规则已经添加并收集所有消息。
添加此内容后,上述过滤器按预期工作 - 仅接收基于指定PropertyValue的消息。