cerco di accodare i messaggi in Azure code in modo asincrono in questo modo:asincrono intervento a Azure code
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);
}
Se ho capito bene questo dice "avviare l'accodamento un elemento dopo l'altro senza di loro per ottenere pubblicato in attesa, tenere un riferimento per ogni attività e quindi attendere che tutti vengano pubblicati ".
Questo codice funziona bene nella maggior parte dei casi, ma per un gran numero di articoli (5000), inizia l'accodamento e poi genera un'eccezione timeout (dopo aver accodato ~ 3500 articoli).
ho risolto aspettando ognuno di finire prima di continuare con il successivo
private async Task EnqueueItemsAsync(IEnumerable<string> messages) {
foreach (var message in messages) {
await _queue.AddMessageAsync(new CloudQueueMessage(message), null, null, null, null);
}
}
Qualcuno può spiegare perché questo è accaduto?
Eccezione:
System.AggregateException
che avvolge molte di queste eccezioni:Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions.<>c__DisplayClass4.<CreateCallbackVoid>b__3(IAsyncResult ar)
Richiesta Informazioni IDRichiesta: RequestDate: StatusMessage: < --- ---> (Eccezione interna # 1) Microsoft.WindowsAzure.Storage. StorageException: il client non ha potuto terminare l'operazione entro il timeout specificato. ---> System.TimeoutException: il client non ha potuto completare l'operazione entro il timeout specificato. --- Fine della traccia dello stack di eccezioni interne --- Microsoft.WindowsAzure.Storage.Core.Executor.Executor.EndExecuteAsync [T] (IAsyncResult risultato) `.
Quale linea genera l'eccezione? e quale metodo? Pubblica il nome dell'eccezione, il messaggio e lo stacktrace –
@SriramSakthivel grazie per averlo menzionato, ho appena aggiornato il mio post –