繁体   English   中英

Azure Service Bus属性筛选器

[英]Azure Service Bus Property Filter

我试图过滤来自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的消息。

来源: http//azure.microsoft.com/en-us/documentation/articles/service-bus-dotnet-how-to-use-topics-subscriptions/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM