我有一个Azure功能,其输入绑定到事件中心。
public static async Task Run(TraceWriter log, string eventHubMessage)
触发该功能时,默认情况下每次执行会收到多少条消息?
1次执行= 1条消息?
我已阅读文档并了解您可以在函数的host.json文件中设置这些属性:
"eventHub": {
// The maximum event count received per receive loop. The default is 64.
"maxBatchSize": 64,
// The default PrefetchCount that will be used by the underlying EventProcessorHost.
"prefetchCount": 256
}
maxBatchSize是否意味着我将在一次执行中收到64条消息?
答案 0 :(得分:3)
默认情况下,它将逐步进行处理,但您也可以进行批量处理。将功能的签名更改为
public static async Task Run(TraceWriter log, string[] eventHubMessages)
(如果您像我一样更改名称,也重命名绑定参数)
参考github issue。
答案 1 :(得分:2)
@Mikhail是对的。我只想添加以下内容:
如果您需要批量处理每个执行,请更改以下内容:
一个。在function.json
中,添加属性"cardinality":"many"
,如图所示here。
湾在run.csx
中,修改函数签名并在循环中处理消息,例如
public static async Task Run(TraceWriter log, string[] eventHubMessages)
{
foreach(string message in eventHubMessages)
{
// process messages
}
}
您在问题中指定的host.json配置允许您试验正确的批量大小和预取缓冲区,以满足工作流程的需要。
其他评论: