启用了会话的功能应用程序的Azure Service总线触发器-Node.js

时间:2019-10-17 10:26:32

标签: node.js azure azure-functions azureservicebus

我有一个启用了会话的服务总线触发的功能,但出现错误:

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": ....

      }
    }
  }
}

enter image description here

还尝试在function.json中添加"isSessionsEnabled": true,但仍然出现相同的错误。

有什么主意吗?

2 个答案:

答案 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以在本地启动功能应用程序。您应该再也不会看到错误消息,并且可以使用启用了会话的队列来触发该功能。