具有Azure功能的基于会话的服务总线

时间:2018-07-12 06:09:14

标签: azure azure-functions azureservicebus

我正在Azure上使用会话队列,当我将一些数据推送到队列时,我编写了一个Azure函数来触发。

请注意,我已经创建了基于statefull / session的队列。

问题是,当我此时将数据推送到队列中时,出现了类似

的错误
  

函数“ xxx”的侦听器无法启动。   Microsoft.ServiceBus:不可能需要   会话以创建非会话式消息接收器

所以我的问题是我不能在会话中使用带有队列/主题的功能吗?

3 个答案:

答案 0 :(得分:6)

这是一个常见问题,但是当前Web Jobs SDK以及Azure Functions目前不支持Service Bus会话。参见notna;不幸的是,创建三年后没有任何进展。在WebJobs SDK issue中添加+1。

答案 1 :(得分:3)

您需要在使用者AF的function.json中指定属性“ IsSessionsEnabled”:true

答案 2 :(得分:0)

我认为现在可以使用Beta软件包Microsoft.Azure.WebJobs.Extensions.ServiceBus/3.1.0-beta2实现它。

public static void Run([ServiceBusTrigger("core-test-queue1-sessions",
    Connection = "AzureWebJobsServiceBus",
    IsSessionsEnabled = true)]string myQueueItem, 
    IMessageSession messageSession,
    ILogger log)

您还可以在host.json中指定新的SessionHandlerOptions部分:

{
    "version": "2.0",
    "extensions": {
        "serviceBus": {
            "SessionHandlerOptions":
             {
                "MaxAutoRenewDuration": "00:01:00",
                "MessageWaitTimeout": "00:05:00",
                "MaxConcurrentSessions": 16,
                "AutoComplete": true,
             }
        }
    }
}

https://github.com/azure/azure-webjobs-sdk/issues/529#issuecomment-491113458