tôi cố gắng enqueue tin nhắn trong Azure Queues không đồng bộ như thế này:không đồng bộ gửi bài đến Azure Queues
private async Task EnqueueItemsAsync(IEnumerable<string> messages) {
var tasks = messages.Select(msg => _queue.AddMessageAsync(new CloudQueueMessage(msg),
null, null, null, null));
await Task.WhenAll(tasks);
}
Nếu tôi làm cho nó đúng này nói "bắt đầu enqueuing một mục sau khi khác mà không cần chờ họ được đăng, giữ một tham chiếu cho mỗi tác vụ và sau đó đợi cho đến khi tất cả được đăng ".
Mã này hoạt động tốt trong hầu hết các trường hợp, nhưng đối với một số lượng lớn mục (5000), nó bắt đầu enqueuing và sau đó ném ngoại lệ hết thời gian (sau khi đã nạp ~ 3500 mục).
tôi giải quyết nó bằng cách chờ đợi mỗi người để kết thúc trước khi tiếp tục tiếp theo một
private async Task EnqueueItemsAsync(IEnumerable<string> messages) {
foreach (var message in messages) {
await _queue.AddMessageAsync(new CloudQueueMessage(message), null, null, null, null);
}
}
bất cứ ai có thể giải thích tại sao điều này xảy ra?
Ngoại lệ:
System.AggregateException
bao bọc nhiều trường hợp ngoại lệ như:Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions.<>c__DisplayClass4.<CreateCallbackVoid>b__3(IAsyncResult ar)
Yêu cầu Thông tin RequestID: RequestDate: StatusMessage: < --- ---> (Inner Exception # 1) Microsoft.WindowsAzure.Storage. Lưu trữException: Khách hàng không thể hoàn thành hoạt động trong thời gian chờ được chỉ định. ---> System.TimeoutException: Máy khách không thể hoàn tất thao tác trong thời gian chờ được chỉ định. --- Kết thúc dấu vết ngăn xếp ngoại lệ bên trong --- Microsoft.WindowsAzure.Storage.Core.Executor.Executor.EndExecuteAsync [T] (IAsyncResult kết quả) `.
Những dòng ném ngoại lệ? và phương pháp nào? Đăng tên, thông báo và stacktrace ngoại lệ –
@SriramSakthivel cảm ơn vì đã đề cập đến, chỉ cần cập nhật bài đăng của tôi –