我想通过CorrelationFilter为与主题关联的订阅创建过滤器规则,因为它比SQLFilter快。
规则:任何包含等于字符串的标头的消息将进入一个订阅,另一个字符串将进入不同的订阅。例如:
Topic: order
Subcription1: header_orderType: orderPlaced
Subcription2: header_orderType: orderPaid
类似于下面通过服务总线资源管理器以蓝色突出显示的版本。
代码中的SQLFilter https://dzone.com/articles/everything-you-need-know-about-5
答案 0 :(得分:0)
TopicFilters示例也涵盖了使用ARM模板设置的相关性过滤器。在C#和PS中也应该如此。
您将必须首先创建一个Microsoft.Azure.ServiceBus.CorrelationFilter
对象
var orderPlacedFilter = new CorrelationFilter();
filter.Properties["header_orderType"] = "orderPlaced";
然后通过调用Microsoft.Azure.ServiceBus.SubscriptionClient.AddRuleAsync()
subsClient.AddRuleAsync("orderPlacedFilter", orderPlacedFilter);
类似地,对于其他订阅及其过滤器。
猜猜文档不是真的很出色,但是我相信这应该有用
$rule = New-AzServiceBusRule -ResourceGroupName prvalav-common -Namespace prvalav-common -Topic test -Subscription test -Name SBRule -SqlExpression "test = 0"
$rule.FilterType = 1
$rule.SqlFilter = $null
$rule.CorrelationFilter.Properties["header_orderType"] = "orderPlaced"
Set-AzServiceBusRule -ResourceGroupName prvalav-common -Namespace prvalav-common -Topic test -Subscription test -Name SBRule -InputObject $rule
如果您对FilterType = 1
感到疑惑,请检查FilterType
枚举。
设置后,在功能应用中,您只需将Service Bus Trigger与主题/订阅详细信息一起使用。