3

我正在尝试创建一个函数,当消息在 Azure 服务总线订阅中可用时触发。我遵循了官方文档中的简短示例。

通过本地运行应用程序func host start会导致以下错误:“ServiceBusTriggerJS:未注册绑定类型'serviceBusTrigger'。请确保类型正确并安装了绑定扩展。

我的设置:

package.json包含 azure 节点模块:"azure": "^2.2.1-preview". 节点版本为 8.11。

function.json如示例中所示:

{
  "disabled": false,
  "bindings": [
    {
      "topicName": "myTopic",
      "subscriptionName": "mySubscription",
      "connection": "MyServiceBus",
      "name": "myQueueItem",
      "type": "serviceBusTrigger",
      "direction": "in"
    }
  ]
}

local.settings.json包含到服务总线的连接字符串和本地运行所需的存储帐户:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=...",
    "MyServiceBus": "Endpoint=sb://...servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=..."
  }
}

index.js也与示例相同:

module.exports = function (context, myQueueItem) {
    context.log('JavaScript queue trigger function processed work item', myQueueItem);
    context.done();
};

编辑:这类似于这个问题:绑定类型 'serviceBusTrigger' is not registered error in azure functions c# with core tools 2。问题(以及解决方案)是相同的。我在这里找到了直接实施的答案。

4

2 回答 2

3

您应该使用安装服务总线扩展

func extensions install --package Microsoft.Azure.WebJobs.ServiceBus --version 3.0.0-beta5.

该扩展用于注册服务总线触发器,使您的本地函数运行时识别该触发器。它就像是运行时的补充,所以你使用什么语言并不重要。

一切都在我身边(js函数),如果您有其他问题,请随时询问。

于 2018-04-25T05:29:46.957 回答
1

这是我对BuildAzure DevOps 中 CI/CD 管道上的 Azure 函数服务总线队列触发器(在 Node.Js 中)所做的:在将函数部署到 azure 后将其添加到以下步骤之前,我遇到了serviceBusTrigger is not registered错误:

- script: 'func extensions install --package Microsoft.Azure.WebJobs.ServiceBus --version 3.0.0-beta8'
   displayName: 'install servicebus extension'

- script: 'func extensions install --package Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator --version 1.0.1'
  displayName: 'install azure WebJobs ExtensionsMetadataGenerator'


但是在添加了如下所示的这些步骤之后,它就可以正常工作了。我在 Azure DevOps 构建管道上使用了这个 YAML,它对我有用:

pool:
  vmImage: windows-2019
  demands: npm

steps:
- script: 'func extensions install --package Microsoft.Azure.WebJobs.ServiceBus --version 3.0.0-beta8'
   displayName: 'install servicebus extension'

- script: 'func extensions install --package Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator --version 1.0.1'
  displayName: 'install azure WebJobs ExtensionsMetadataGenerator'

- task: NodeTool@0
  inputs:
    versionSpec: '10.x'

- task: Npm@1
  displayName: 'npm install'
  inputs:
    command: install

- task: Npm@1
  displayName: 'npm az core tools'
  inputs:
    command: custom
    verbose: false
    customCommand: 'i -g azure-functions-core-tools@core --unsafe-perm t'

- task: PublishTestResults@2
  inputs:
    testResultsFiles: '**/TEST-RESULTS.xml'
    testRunTitle: 'Test results for JavaScript'
  condition: succeededOrFailed()

- task: ArchiveFiles@2
  inputs:
    rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
    includeRootFolder: false
    archiveFile: "$(System.DefaultWorkingDirectory)/FunctionApp.zip"

- task: CopyFiles@2
  inputs:
    SourceFolder: '$(System.DefaultWorkingDirectory)'
    TargetFolder: '$(Build.ArtifactStagingDirectory)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: "$(Build.ArtifactStagingDirectory)"
    ArtifactName: "drop"
于 2019-11-22T18:27:42.787 回答