Пример TopicFilters также охватывает корреляционный фильтр, который настраивается с использованием шаблона ARM. То же самое должно быть возможно в C # и PS.
C #
Сначала вам нужно будет создать Microsoft.Azure.ServiceBus.CorrelationFilter
объект
var orderPlacedFilter = new CorrelationFilter();
filter.Properties["header_orderType"] = "orderPlaced";
А затем добавьте его в свой клиентский объект подписки, вызвав Microsoft.Azure.ServiceBus.SubscriptionClient.AddRuleAsync()
subsClient.AddRuleAsync("orderPlacedFilter", orderPlacedFilter);
Аналогично для другой подписки и ее фильтра.
PowerShell
Думаю, документация не очень хорошая, но я считаю, что это должно сработать
$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
.
После настройки в своем функциональном приложении вы просто используете Триггер служебной шины с информацией о теме / подписке.