0

我创建了一个示例客户端,它侦听附加到服务总线主题的订阅。现在,每当在该主题中发布消息时,它都会被收听订阅者的客户端捕获。(如下文所述)

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'"

4

1 回答 1

1

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

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

sql_filter = "occupation = 'actor'"

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

于 2019-06-28T10:31:05.783 回答