我有一个启用了会话的服务总线触发的功能,但出现错误:
Microsoft.Azure.ServiceBus: It is not possible for an entity that requires sessions to create a non-sessionful message receiver
是否可以通过nodejs应用启用会话?
我试图编辑host.json,但没有成功,SessionHandlerOptions未显示为serviceBus的属性...“不允许使用SessionHandlerOptions属性”
{
"version": "2.0",
"extensions": {
"serviceBus": {
"SessionHandlerOptions": ....
}
}
}
}
还尝试在function.json中添加"isSessionsEnabled": true
,但仍然出现相同的错误。
有什么主意吗?
答案 0 :(得分:1)
这是一个常见问题。自创建Azure Function以来,Azure Functions不支持Service Bus会话。这种情况持续3-4年。几个月前提出了一个支持此功能的nuget软件包。对于node.js
,我找不到要安装的SDK。如果您使用C#
,现在有解决方案。但是对于node.js
,我不确定。您可以尝试使用最新的SDK,也许它可以支持此功能。
这是一个函数SDK issue。你可以看看
答案 1 :(得分:0)
因此,经过几个小时,并感谢@BowmanZhu的建议,我发现使用node.js时也可以使用的解决方案。 我正在使用azure-functions-core-tools,因此将其更新为最新版本:
npm install -g azure-functions-core-tools@2
从项目的根图中安装ServiceBus扩展软件包3.1.1:
dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 3.1.1
在extensions.csproj
文件中,您现在应该看到该软件包的软件包引用是3.1.1
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="3.1.1" />
然后运行:
func extensions install
最后添加function.json添加绑定:
"isSessionsEnabled": true
运行func start
以在本地启动功能应用程序。您应该再也不会看到错误消息,并且可以使用启用了会话的队列来触发该功能。