c# - Azure 服务总线属性筛选器

标签 c# azure azureservicebus

我正在尝试过滤来自 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/

关于c# - Azure 服务总线属性筛选器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27495569/

相关文章:

c# - 从代码隐藏 c# 和 Asp.Net 调用 javascript

c# - ComboBox 中的 SelectedItem 绑定(bind)

r - 'Extending U-SQL scripts with R code in Visual Studio' 可用吗?

c# - 当锁定持续时间尚未过去时,Azure 服务总线对非分区队列抛出 MessageLockLostException

javascript - 使用 azure-sb 进行并行消息处理

c# - XSS 改变 ASP.NET session 状态

c# - 使用 Linq 返回节点中的属性列表

c# - 如何获取WCF 4.0 Restful响应带宽消耗?

Azure VM 使用 Terraform 将动态 IP 转换为静态

azure - 使用可用区在 Azure 服务总线上实现高可用性