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

使用Azure ARM模板创建带有Sql筛选器的服务总线主题订阅?

陶高峯
2023-03-14

我已经能够弄清楚如何设置Azure ARM模板,该模板创建/管理Azure服务总线名称空间、主题和订阅,以接收所有消息。但是,ARM Tempates上的Microsoft文档仍然非常缺乏,我无法弄清楚如何在模板中为订阅定义一个SqlFilter,您可以使用.NET SDK管理该模板。

有人知道如何在ARM模板中向服务总线主题订阅添加Sql筛选器吗?

这里有一个ARM模板的链接,用于创建服务总线主题和没有Sql筛选器的订阅:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "serviceBusNamespaceName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Service Bus Namespace"
      }
    },
    "serviceBusTopicName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Service Bus Topic"
      }
    },
    "serviceBusTopicSubscriptionName": {
      "type": "string",
      "metadata": {
        "description": "Name of the Service Bus Topic Subscription"
      }
    }
  },
  "variables": {
    "sbVersion": "2015-08-01"
  },
  "resources": [
    {
      "apiVersion": "[variables('sbVersion')]",
      "name": "[parameters('serviceBusNamespaceName')]",
      "type": "Microsoft.ServiceBus/namespaces",
      "location": "[resourceGroup().location]",
      "properties": {
      },
      "resources": [
        {
          "apiVersion": "[variables('sbVersion')]",
          "name": "[parameters('serviceBusTopicName')]",
          "type": "Topics",
          "dependsOn": [
            "[concat('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]"
          ],
          "properties": {
            "path": "[parameters('serviceBusTopicName')]"
          },
          "resources": [
            {
              "apiVersion": "[variables('sbVersion')]",
              "name": "[parameters('serviceBusTopicSubscriptionName')]",
              "type": "Subscriptions",
              "dependsOn": [
                "[parameters('serviceBusTopicName')]"
              ],
              "properties": {
              },
              "resources": [
              ]
            }
          ]
        }
      ]
    }
  ],
  "outputs": {
  }
}

共有1个答案

宣望
2023-03-14

只需在订阅资源中添加以下内容即可创建SQL筛选器和操作:

,“resources”:[{“apiversion”:“[variables('sb version')]”,“name”:“$default”,“type”:“rules”,“dependson”:[“[parameters('service bussubscriptionname')]”],“properties”:{“filtertype”:“sqlfilter”,“sqlfilter”:{“sqlexpression”:“1=1”,“requirespreprocessing”:false},“action”:{“sqlexpression”:“set

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

  • 我试图遵循Mark Heath的控制台应用程序示例,使用筛选后的订阅检索服务总线主题消息。但是,我实际上无法检索实际筛选的消息(Filtered1、Filtered2)。消息确实会被使用,但我无法查看它们,因为代码从未像处理非过滤消息(AllMessages)那样进入回调函数。对我错过了什么有什么想法吗? 发件人代码 接收机代码

  • 我之所以要这样做,是因为我们的服务在部署时配置订阅规则,并且具有消息代理的服务可能会在具有订阅客户端的服务更改规则集和新的业务逻辑之前部署该服务,该服务会发送一组新的消息。我们不希望丢失在部署期间发送的消息,并在新服务退出时处理它们。 干杯。

  • 我订阅了一个主题,发件人设置了两个UserProperties“classification”和“subclassification”。我想筛选分类设置为1的邮件。我尝试添加以下SQLFilter。 SqlFilter(“Classification='1'”)

  • 我有一个使用ActiveMQ的JMS生产者/订阅者的简单Spring应用程序,配置如下: 我试过所有可能的解决办法,但没有一个奏效。我们非常感谢任何帮助

  • 下午好. 我们使用服务总线主题作为pub/sub系统的引擎。我们的逻辑涉及我们的C#服务通过订阅与主题挂钩。我们删除$default(TrueFilter),并将AutoDeleteOnIdle设置为5分钟。 当系统的其他部分需要东西时,他们告诉我们的C#服务,“我需要这个。”然后,C#服务添加新的规则(通常是CorrelationFilter)。 由于系统的那些相同部分不再需要东西,它们告诉我们