【问题标题】:Azure Service bus trigger for function app with session enabled - Node.js启用会话的功能应用的 Azure 服务总线触发器 - Node.js
【发布时间】:2019-10-18 17:29:40
【问题描述】:

我有一个由启用会话的服务总线触发的功能,但我收到错误:

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,但仍然出现同样的错误。

有什么想法吗?

【问题讨论】:

    标签: node.js azure azure-functions azureservicebus


    【解决方案1】:

    这是一个常见的问题。 Azure Functions 自创建 Azure Functions 以来不支持服务总线会话。这种情况持续3-4年。几个月前出现了一个 nuget 包来支持这一点。对于node.js,我没有找到要安装的SDK。如果您使用C#,现在它有一个解决方案。但是对于node.js,我不确定。你可以试试最新的SDK,也许它可以支持这个。

    这是一个函数SDK issue。你可以看看。

    【讨论】:

      【解决方案2】:

      所以,几个小时后,感谢@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 以在本地启动函数应用。您应该不会再看到错误消息,并且可以使用启用会话的队列来触发该功能。

      【讨论】:

      • 如果我的回答对您有帮助,您能标记我的回答吗?
      • 感谢您的建议,但我认为标记的正确答案(这将帮助其他有同样问题的人)是这个。
      • 好吧,没关系。感谢您对社区的贡献。
      猜你喜欢
      • 2018-08-10
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2021-05-20
      • 2021-09-28
      相关资源
      最近更新 更多