Ich habe ein Projekt, das Produktfeeddateien in meinem System verarbeitet. Für eine bestimmte Feed-Datei dauert der gesamte Prozess etwa 40-50 Minuten. Jetzt habe ich eine WebJob
erstellt, um Bilder aus dem Feed zu verarbeiten, und ich sende Bild URLs von meinem ersten Projekt an WebJob
durch Erstellen von Speicher-Client. Als ich das zu meinem Projekt hatte, erhöhte es die Verarbeitungszeit erheblich, also versuchte ich, es mit Task.Run
zu verwenden, um Fire and Forget
Ansatz zu verwenden, aber noch mit dieser Gesamtprozesszeit ist jetzt ungefähr 2 Stunden.Das Erstellen einer Speicherwarteschlange in Task.Run verdoppelt meine Verarbeitungszeit.
Hier ist, wie ich meine Methode aufrufen, die Speicherwarteschlange erstellt.
if (insertImages)
{
#pragma warning disable 4014
Task.Run(async() => { await new QueueUtility().CreateQueueMessage(picture); }).ConfigureAwait(false);
#pragma warning restore 4014
}
Und hier ist mein Code Warteschlange Nachricht
public async Task CreateQueueMessage(Picture picture)
{
Utility.Log log = new Utility.Log();
await AddQueueMessage(picture.url);
}
public async Task AddQueueMessage(string queueMessage)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("ImagekWebJobStorage"));
// Create the queue client.
CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
// Retrieve a reference to a container.
CloudQueue queue = queueClient.GetQueueReference("imagekqueue");
// Create the queue if it doesn't already exist
queue.CreateIfNotExists();
// Create a message and add it to the queue.
CloudQueueMessage message = new CloudQueueMessage(queueMessage);
queue.AddMessage(message);
}
Ich verstehe nicht, warum meine Verarbeitungszeit verdoppelt und kann nicht einen Weg zu umgehen, dass entweder finden zu erstellen. Irgendwelche Ideen, die mir helfen würden, das zu lösen, wären wirklich hilfreich.
für 1. Punkt, meinst du 'queue.CreateIfNotExists()'? – erincerol
Ja, Sie müssen dies weiterhin tun, es sei denn, Sie erstellen mit jedem Anruf neue Warteschlangen. Viel effizienter, um Warteschlangen im Voraus einzurichten. –
Auch jeder Aufruf von Creatifnotexists verursacht Transaktionsgebühren. Sie können es lokal zwischenspeichern, nachdem Sie es einmal aufgerufen haben. Nicht zu viel Kosten, aber immer noch gut, um zu sparen, was immer Sie können –