serviceBusTrigger 未在 Azure Functions for Javascript 中注册错误



我正在尝试创建一个函数,该函数在 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"未在具有核心工具 2 的 Azure 函数 c# 中注册错误。问题(因此解决方案)是相同的。我在这里找到答案可以直接实现。

您应该使用

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

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

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

这是我在 Azure DevOps 的 CI/CD 管道上BuildAzure 函数服务总线队列触发器(在 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 Build 管道上使用了这个 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"

最新更新