Host.json for Azure 函数中的 MaxBatchSize 不起作用



我在host.json中对我的Azure函数有以下限制,我正在多次向EvenHub发送30000条消息,但我看到我的Azure函数没有选择超过64,这是默认值。它不选择 maxbtachsize 值的任何特殊原因。

事件中心配置的单个事件中心的分区计数为 25,单个 TU 的分区计数为 15

"version": "2.0",
"extensions": {
"eventHubs": {
"batchCheckpointFrequency": 5,
"eventProcessorOptions": {
"maxBatchSize": 256,
"prefetchCount": 512
}
}
}

对于dotnet core,我遇到了这个问题,应用程序没有采用 maxBatchSize 或 host.json 中提到的其他参数。我无法从host.json执行此操作。但它是使用依赖注入(IOptions(完成的

public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.PostConfigure<EventHubOptions>(o =>
{
o.EventProcessorOptions.MaxBatchSize = 256;
o.EventProcessorOptions.PrefetchCount = 512;
});
}

现在,它对我有用!如果可用,它正在绘制 256 个事件。

不应期望事件完全按照 maxBatchSize 配置的批大小传递。 maxBatchSize 定义最大批大小,以便事件可以有 1 到 maxBatchSize 批大小。

如果由于单个主机无法处理太多内容而导致积压工作正在生成,则 Azure 函数应通过添加更多主机进行横向扩展。当新主机变为活动状态时,它们应接管某些分区,从而提高读取和处理速率。有关更多详细信息,请参阅此处的缩放部分 -https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs

"enableReceiverRuntimeMetric": true,

如果事件可用,则提供最大批处理大小计数。

"eventHubs": {
"batchCheckpointFrequency": 5,
"eventProcessorOptions": {
"enableReceiverRuntimeMetric": true,
"invokeProcessorAfterReceiveTimeout": false,
"maxBatchSize": 256,
"prefetchCount": 512,
"receiveTimeout": "00:05:00"
}
}

最新更新