gpt4 book ai didi

c# - 通过 ICollector 将消息输出到队列的 Azure WebJob 列表似乎很慢

转载 作者:行者123 更新时间:2023-12-03 03:11:55 25 4
gpt4 key购买 nike

我有一个 Azure WebJob,它循环遍历文件页面并处理它们。该作业还有一个 ICollector 到输出队列:

[Queue("batch-pages-to-process")] ICollector<QueueMessageBatchPage> outputQueueMessage

我需要等到所有页面都处理完毕后再将所有内容发送到输出队列,因此我不是将每条消息添加到文件处理循环中的 ICollector,而是将消息添加到队列消息列表中:

List<QueueMessageBatchPage>

处理完所有页面后,我循环遍历列表并将消息添加到 ICollector:

foreach (var m in outputMessages)
{
outputQueueMessage.Add(m);
}

但这最后一部分似乎需要很长时间。添加300条队列消息,大约需要50秒。我没有太多可以衡量的东西,但这似乎很慢。这正常吗?

最佳答案

没有慢与快的客观标准可以为您提供,但有一些想法:

a) 部分排队时间将用于每个 QueueMessageBatchPage 实例的序列化...其性能将与这些实例所代表的对象图的广度和深度成反比。更多数据显然需要更多时间写入队列。

b)我知道您提到在处理所有文件行之前您无法写入队列,但如果可能的话您可能会重新考虑该选择。如果您可以并行处理文件中的行并随后写入输出队列(使用多个 WebJob 实例或单个 WebJob 实例中的 TPL 任务),您可能会更快地完成这项工作。再说一遍,我意识到您事先声明过您不能这样做,所以我只是建议您考虑该选择的全部含义(如果您还没有)。

c) 另一种需要考虑的可能性...确保存储队列所在的区域与 WebJob 所在的区域相同,以最大限度地减少延迟。

祝你好运!

关于c# - 通过 ICollector 将消息输出到队列的 Azure WebJob 列表似乎很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36216373/

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