gpt4 book ai didi

带有事件中心触发器的Azure函数接收到奇怪数量的事件

转载 作者:行者123 更新时间:2023-12-03 00:56:17 24 4
gpt4 key购买 nike

我有一个事件中心和连接到它的 Azure Function。对于少量数据,一切都运行良好,但当我用 10 000 个事件对其进行测试时,我得到了非常奇怪的结果。出于测试目的,我将 0 到 9999 的编号发送到事件中心,并将数据记录在应用程序洞察和服务总线中。对于我在 Azure 中看到的第一个测试,集线器恰好收到了 10000 个事件,但服务总线和 AI 收到了 0 到 4500 之间的所有消息,以及 4500 之后的每条消息(因此丢失了大约 30%)。在第二次测试中,我收到了从 0 到 9999 的所有消息,但 3500 到 3200 之间的每一条消息都是重复的。我想一次性收到所有消息,我做错了什么?

public async Task Run([EventHubTrigger("%EventHubName%", Connection = "AzureEventHubConnectionString")] EventData[] events, ILogger log)
{
int id = _random.Next(1, 100000);
_context.Log.TraceInfo("Started. Count: " + events.Length + ". " + id); //AI log
foreach (var message in events)
{
//log with ASB
var mess = new Message();
mess.Body = message.EventBody.ToArray();
await queueClient.SendAsync(mess);
}
_context.Log.TraceInfo("Completed. " + id); //AI log
}

最佳答案

通过使用 EventData[] 事件,您可以以批处理模式从集线器读取事件,这就是为什么您会看到一次处理 X 个事件,然后下一秒处理下一批。

简单地使用EventData来代替EventData[]。

当您将事件发送到集线器时,如果您想尝试批处理,请检查所有事件是否都使用相同的分区键发送,否则它们可以根据 TU(吞吐量单位)、PU(处理单元)和 CU 分为多个分区(容量单位)。

导出:每秒最多 2 MB 或每秒 4096 个事件。

Refer to this document .

基本、标准、高级的吞吐量限制:

enter image description here

关于带有事件中心触发器的Azure函数接收到奇怪数量的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68063561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com