我们如何禁用 Azure 订阅中的 SQl 过滤器?
How can we disable the SQl filter in Azure Subscriptions?
我用它来创建我的订阅:
public void CreateSubFilter(String TopicName, String SubscriptionName, String expression)
{
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
// Create a filtered subscription
SqlFilter MyFilter = new SqlFilter(expression);
namespaceManager.CreateSubscription(TopicName, SubscriptionName, MyFilter);
}
我找不到默认过滤器 (Matchall),所以 myFilter
只是添加到匹配的所有过滤器中。
我的问题是如何删除匹配所有默认过滤器?
编辑 2 :
订阅正在为类似 proprty1 = 'value' 的东西工作
但是当它尝试使用以下数字时它不起作用:
portty1 > 值
我读了很多关于 SQL 过滤器的文章,我确信我的问题来自那里......
感谢大家的帮助
如果您不想应用过滤器,请使用不带过滤器的 CreateSubscription signature。那不会应用过滤器。
订阅始终有一个包含过滤器 1=1(匹配所有)的默认规则(名为“$Default”)。
AFAIK 您需要在 SubscriptionClient class.
上调用 RemoveRule 方法
保罗.
感谢您的帮助,他是解决方案希望对您有所帮助:
创建一个带有 custum
的订阅
public void CreateSubFilter(String TopicName, String SubscriptionName)
{
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
namespaceManager.CreateSubscription(TopicName, SubscriptionName);
}
第二个添加过滤器并删除默认过滤器(匹配所有):
public void addRuleFilter(String TopicName, String SubscriptionName, String filterName,String expression)
{
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);
// Create a filtered subscription
SqlFilter MyFilter = new SqlFilter(expression);
SubscriptionClient mySubscriptionClient = factory.CreateSubscriptionClient(TopicName, SubscriptionName);
try
{
mySubscriptionClient.RemoveRule("$Default");//delete le MatchALL
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
mySubscriptionClient.AddRule(filterName, MyFilter);//add my Filter
}
希望对您有所帮助
我建议添加命名规则描述:
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
// Create a filtered subscription
SqlFilter MyFilter = new SqlFilter(expression);
var ruleDescription = new RuleDescription("RuleName", MyFilter);
namespaceManager.CreateSubscription(TopicName, SubscriptionName, ruleDescription);
在这种情况下,不会创建 $Default 规则。
我用它来创建我的订阅:
public void CreateSubFilter(String TopicName, String SubscriptionName, String expression)
{
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
// Create a filtered subscription
SqlFilter MyFilter = new SqlFilter(expression);
namespaceManager.CreateSubscription(TopicName, SubscriptionName, MyFilter);
}
我找不到默认过滤器 (Matchall),所以 myFilter
只是添加到匹配的所有过滤器中。
我的问题是如何删除匹配所有默认过滤器?
编辑 2 : 订阅正在为类似 proprty1 = 'value' 的东西工作 但是当它尝试使用以下数字时它不起作用: portty1 > 值 我读了很多关于 SQL 过滤器的文章,我确信我的问题来自那里...... 感谢大家的帮助
如果您不想应用过滤器,请使用不带过滤器的 CreateSubscription signature。那不会应用过滤器。
订阅始终有一个包含过滤器 1=1(匹配所有)的默认规则(名为“$Default”)。 AFAIK 您需要在 SubscriptionClient class.
上调用 RemoveRule 方法保罗.
感谢您的帮助,他是解决方案希望对您有所帮助: 创建一个带有 custum
的订阅public void CreateSubFilter(String TopicName, String SubscriptionName)
{
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
namespaceManager.CreateSubscription(TopicName, SubscriptionName);
}
第二个添加过滤器并删除默认过滤器(匹配所有):
public void addRuleFilter(String TopicName, String SubscriptionName, String filterName,String expression)
{
MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);
// Create a filtered subscription
SqlFilter MyFilter = new SqlFilter(expression);
SubscriptionClient mySubscriptionClient = factory.CreateSubscriptionClient(TopicName, SubscriptionName);
try
{
mySubscriptionClient.RemoveRule("$Default");//delete le MatchALL
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
mySubscriptionClient.AddRule(filterName, MyFilter);//add my Filter
}
希望对您有所帮助
我建议添加命名规则描述:
var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
// Create a filtered subscription
SqlFilter MyFilter = new SqlFilter(expression);
var ruleDescription = new RuleDescription("RuleName", MyFilter);
namespaceManager.CreateSubscription(TopicName, SubscriptionName, ruleDescription);
在这种情况下,不会创建 $Default 规则。