Azure主题订阅筛选器/订阅规则

时间:2019-06-28 10:01:18

标签: azure terraform azure-servicebus-topics terraform-provider-azure azure-servicebus-subscriptions

我创建了一个示例客户端,该客户端侦听附加到Service-Bus主题的订阅。现在,无论何时在该主题中发布消息,客户端都会通过监听订户来捕获它。 (如下所述)

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在天蓝色的云中创建资源。上面链接中建议的模块,但是如何定义sql_filter来考虑"occupation":"actor"

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

我尝试了如下操作,但是字符“:”无效

sql_filter = "'occupation':'actor'"

1 个答案:

答案 0 :(得分:0)

您无法在消息正文中的属性上定义SQL Filter,因为消息正文可以是任何东西。 SQL Filters处理消息中的custom properties

例如,如果要在occupation上创建过滤器,则需要将其定义为消息中的自定义属性之一,并将其​​值设置为actor。然后,您的SQL Filter表达式将像:

sql_filter = "occupation = 'actor'"

您可能会发现此博客文章很有用:https://www.markheath.net/post/azure-service-bus-filtered-subscriptions

相关问题