Создание правила фильтра тем через CorrelationFilter с приложением Azure Functions - PullRequest
0 голосов
/ 08 мая 2019

Я хочу создать правило фильтра с помощью CorrelationFilter для подписок, связанных с темой, поскольку оно работает быстрее, чем SQLFilter.

Правило: любое сообщение, содержащее заголовок, равный строке, попадет в одну подпискудругая строка перейдет в другую подписку.Например:

Topic: order
Subcription1: header_orderType: orderPlaced
Subcription2: header_orderType: orderPaid

Аналогично тому, что выделено синим цветом ниже через обозреватель служебной шины.

enter image description here Ниже приведены другие способы, которые могут этого достичь.

SQLFilter в коде https://dzone.com/articles/everything-you-need-know-about-5

SQLFilter https://github.com/Azure/azure-service-bus/tree/master/samples/DotNet/Microsoft.Azure.ServiceBus/TopicFilters

PS https://docs.microsoft.com/en-us/powershell/module/azurerm.servicebus/New-AzureRmServiceBusRule?view=azurermps-6.13.0

1 Ответ

0 голосов
/ 13 мая 2019

Пример 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.

После настройки в своем функциональном приложении вы просто используете Триггер служебной шины с информацией о теме / подписке.

...