从SQLFilter引用消息UserProperties

时间:2019-07-02 08:36:45

标签: azure asp.net-core azureservicebus

我正在尝试为Azure Service Bus中的订阅客户端筛选消息。我想检查该属性是否不存在或该属性是否具有特定值。这是我添加过滤器的方式:

var rules = await subscriptionClient_.GetRulesAsync();
if (!rules.Any(r => r.Name == "FilteringRule"))
{
    var filter = new SqlFilter($"sys.CustomProperty='{CustomValue}' OR sys.CustomProperty IS NULL");
    await subscriptionClient_.AddRuleAsync("FilteringRule", filter);
}

并将相同的值传递给Microsoft.Azure.ServiceBus.Message对象:

Message msg = new Message();
msg.UserProperties.Add("CustomProperty", "CustomValue");

在Service Bus资源管理器中进行检查会显示该消息确实具有该属性。

我正在尝试找出如何以编程方式而不是通过ARM模板过滤订阅。

1 个答案:

答案 0 :(得分:1)

由于您试图将custom properties视为system properties而导致过滤器无法工作的原因。请尝试将您的过滤器表达式更改为:

var filter = new SqlFilter($"CustomProperty='{CustomValue}' OR CustomProperty IS NULL");

,一切都会正常进行。请注意,我已从您的过滤器表达式中删除了sys.前缀。