簡體   English   中英

通過 ICollector 到隊列的 Azure WebJob 輸出消息列表似乎很慢

[英]Azure WebJob Output List of Messages to Queue via ICollector seems slow

我有一個 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 所在的區域相同,以最大限度地減少延遲。

祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM