製品フィード ファイルをシステムに処理するプロジェクトがあります。1 つの特定のフィード ファイルでは、プロセス全体に約 40 ~ 50 分かかります。これで、フィードから画像を処理するを作成し、ストレージ クライアントを作成WebJob
して、最初のプロジェクトから に画像の URL を送信しています。WebJob
それを自分のプロジェクトに入れると、処理時間が大幅に増加したので、Task.Run
to useFire and Forget
アプローチで使用してみましたが、それでも全体の処理時間は約 2 時間になりました。
ストレージ キューを作成するメソッドを呼び出す方法を次に示します。
if (insertImages)
{
#pragma warning disable 4014
Task.Run(async () => { await new QueueUtility().CreateQueueMessage(picture); }).ConfigureAwait(false);
#pragma warning restore 4014
}
そして、これがキューメッセージを作成するための私のコードです
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);
}
処理時間が 2 倍になった理由がわかりません。また、それを回避する方法も見つかりません。これを解決するのに役立つアイデアは本当に役に立ちます。