当前位置: 首页 > 知识库问答 >
问题:

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

双恩
2023-03-14

https://github.com/azure/azure-service-bus/tree/master/samples/dotnet/gettingstart/microsoft.azure.servicebus/topicsubscriptionwithruleoperationssample

现在我想添加一个筛选器/规则,这样只有通过筛选器中定义的特定条件的消息才应该给订阅。

例如,下面是以字符串形式给出的消息内容json,

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

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

https://www.terraform.io/docs/providers/azurerm/r/servicebus_subscription_rule.html#示例-用法-sql-filter-

我们正在使用terraform在azure云中创建资源。上面链接中建议的模块,但如何定义sql_filter以考虑“职业”:“actor”

sql_filter=“'occuption':'actor'”

共有1个答案

罗昕
2023-03-14

您不能在消息正文中的属性上定义SQL Filter,因为消息正文可以是任何内容。SQL筛选器对消息的自定义属性起作用。

例如,如果要在职业上创建筛选器,则需要将其定义为消息中的一个自定义属性,并将其值设置为actor。那么您的SQL筛选器表达式将如下所示:

sql_filter = "occupation = 'actor'"

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

 类似资料:
  • 我们使用服务总线主题作为pub/sub系统的引擎。我们的逻辑涉及我们的NodeJS服务用多个订阅连接到一个主题。对于每个订阅,我们删除$default(TrueFilter),并在消息头的Label属性上创建一个CorrelationFilter,并且不在订阅中应用AutoDeleteOnIdle设置,因为我们希望确保订阅服务器功能在服务启动之前一直运行。 这个问题可以归结为这样:某件事能导致规则

  • 可以通过为每个请求创建一个订阅并在之后删除它来解决此问题。但我不想创建这么多订阅。我的目标是每次调用函数时只更改过滤器。 示例代码:

  • 我试着按照1给出的教程学习。我创建了一个主题,其中有两个主题的订阅,分别使用sqlFilter(user_age<50)和(user_age>=50)。我为消息定义了一个自定义属性user_age。但当我发送关于这个主题的消息时,两个订阅都收到相同的消息,这是胡说八道!知道吗? 我的代码完全是从tuto中给出的代码中获得灵感的,只是我使用这段代码接收来自给定订阅的消息:

  • 我试图利用固有的WSO2ESB主题发布到jms队列。我已经创建了主题,并提供了一个订阅者URL:jms:/topictest?transport.jms.destinationtype=queue。然而,当我将消息发布到主题时,它不能被传递到队列。日志生成以下内容 “系统无法从jms:/queue?destination=topictest URL推断传输信息。” 另外,我似乎不知道如何发布到WS

  • 我正在试验消息驱动Beans,以便从外部ActiveMQ实例接收主题订阅消息。 我的测试首先从队列订阅开始,它工作得很好。 然后我想尝试主题订阅,但我无法让它工作。 这就是我所拥有的: 会议记录。xml 这是MDB: 我不知道为什么,但从日志中我可以看到,TomEE创建了一个队列,而不是一个主题: 另一个证明是,当我添加持续时间配置时,服务器不会启动: 然后服务器抱怨这不适合配置类型javax.j

  • 如果BrokeredMessage的正文是JSON文本,那么是否可以在该JSON中的属性上设置一个带有过滤器的主题订阅?