2017-09-13 20 views
1

当我在函数绑定中选择了多个“基数”时,它工作正常。EventHub触发函数基数,其中一个导致更高的超时时间

{ 
    "bindings": [ 
    { 
     "type": "eventHubTrigger", 
     "name": "eventHubMessages", 
     "direction": "in", 
     "path": "sessions", 
     "connection": "connectionstring", 
     "cardinality": "many", 
     "consumerGroup": "group1" 
    } 
    ], 
    "disabled": false 
} 

当我在函数绑定中选择“one”时,获得更高的超时。

"cardinality": "one", 

当我看到控制台上,我可以看到有多个功能开始,

2017-09-12T19:37:49.645 Function started (Id=f0ef1cd5-8331-448e-86c6-84c745bbab13) 
2017-09-12T19:37:49.956 Function started (Id=26629395-54b8-4f83-9852-b3d55307318b) 

基数是“多”单线程的,而“一”是越来越平行处理。虽然我在并行处理方面没有问题,但它带来了更高的超时时间。或者这是函数应用程序的核心问题?

总“功能启动”,我能看到接近250是具有可扩展性问题的经理在这里?

+0

我认为当你要处理的一个函数调用多个事件(即接受一个数组作为参数) – Mikhail

+0

与业务流程和时间的限制,功能设置为5分钟“一对多”应该被使用。我不希望函数部分成功并部分失败。如果逐个处理使运行时的成功率更高,故障率更低,那么这将是一条路。但是这些超时问题导致难以逐一处理。 – Kannaiyan

回答

0

基数“一”意味着你每EVENTDATA有效载荷一个函数调用。 '许多'表示每次调用都会得到一批EventData []。 那里https://github.com/Azure/azure-webjobs-sdk/wiki/EventHub-support

是在wiki上一些更详细当推理代码的正确性,则应在函数调用可能并行和批量运行是随机的(除非你非常明确地配置好) 。单个批次可能仍会连续运行。

+0

感谢您的注意。你确定它并行运行吗?如果是这样,那么Azure在功能/ AdJobs方面存在可扩展性问题。不知道在需要资源时添加更多实例。我对这个函数的冷遇并不太高,创建新实例不应该让主叫方有更多时间。 – Kannaiyan

+0

@Kannaiyan,我有一些后续问题: 1)您使用哪种语言编写函数代码? 2)你如何确定超时正在发生?你是否看到同样的消息正在被再次处理(即你可以知道检查点不存在)?我想验证这不是控制台日志记录问题。 –

+0

我更新了我的回答,以澄清它*可能*并行运行(这是重要的o从正确性角度考虑)。 –

相关问题