我正在尝试创建一个函数,该函数在 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 管道上Build
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 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"