Фильтр подписки на тему Azure / Правило подписки - PullRequest
0 голосов
/ 28 июня 2019

Я создал образец клиента, который прослушивает подписку, прикрепленную к теме служебной шины.Теперь, когда сообщение публикуется в этой теме, оно перехватывается клиентом, слушающим подписчика.(как документировано ниже)

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

Теперь я хотел бы добавить фильтр / правило, чтобы только сообщения, которые проходят определенное условие, определенное в фильтре, должны быть переданы подписке.

Например, ниже приведено содержимое сообщения json, которое задано в виде строки,

"{"firstName": "Tony", "LastName": "Stark", "nickName": "Iron Man", "occupation":"actor"}"

Как создать правило подписки, которое получает сообщения только для "occupation": "actor".Согласно документации Azure, нам, однако, нужно использовать SqlFilter, но пока не повезло,

https://docs.microsoft.com/en-us/azure/service-bus-messaging/topic-filters

https://www.terraform.io/docs/providers/azurerm/r/servicebus_subscription_rule.html#example-usage-sql-filter-

Мы используем terraform для создания ресурса в облаке Azure.,Модуль, предложенный в приведенной выше ссылке, но как определить sql_filter для рассмотрения "occupation":"actor"

filter_type = "SqlFilter" sql_filter = "???"

Я пробовал, как показано ниже, но получил недопустимый символ ":"

sql_filter = "'occupation':'actor'"

1 Ответ

0 голосов
/ 28 июня 2019

Вы не можете определить SQL Filter для атрибутов в вашем теле сообщения, так как ваше тело сообщения может быть чем угодно. SQL Filters работает над custom properties сообщением.

Например, если вы хотите создать фильтр на occupation, вам нужно будет указать одно из пользовательских свойств в вашем сообщении и установить его значение на actor. Тогда ваше выражение SQL Filter будет выглядеть так:

sql_filter = "occupation = 'actor'"

Вы можете найти этот пост полезным: https://www.markheath.net/post/azure-service-bus-filtered-subscriptions.

...