2017-11-03 1 views
0

私はバックグラウンドタスクを実行するためにトリガされる連続して実行されているWebジョブを持っています。ジョブがトリガされて作業を実行すると、そのジョブが正常に完了したかどうかをトレースしたり、チェックする方法が見つけられません。QueueTriggerに追加されたメッセージのステータスを取得するには?

トリガーされたジョブのステータスを特定のメッセージで簡単に確認できる方法はありますか?

var taskId =_service.GetTaskId(); 

CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient(); 
CloudQueue _cloudQueue = queueClient.GetQueueReference("taskqueue"); 
      _cloudQueue.CreateIfNotExists(); 

    var taskInfo = new TaskInformation 
      { 
       TaskId = taskId, 
      }; 

    var queueMessage = new CloudQueueMessage(JsonConvert.SerializeObject(taskInfo)); 
    await _cloudQueue.AddMessageAsync(queueMessage); 
    // is it possible to get the status of the queueMessage here? 
    // Whether the queueMessage is completed running successfully or it has failed? 

機能:

public async Task Process(
     [QueueTrigger("taskqueue")] TaskInformation taskInfo, string id, 
     int dequeueCount) 
    { 
     //this process might take a while to complete... 
     await _application.Run(taskInfo.TaskId); 
    } 
+0

キューを使用している場合、メッセージが「x」回完了できなかった場合(設定可能)、ポイズンキューに移動します。これに基づいてイベントがトリガーされ、失敗したことが通知されます。 – lopezbertoni

+0

機能を起動するためにキューが追加されたとき、そのメッセージが完了したかどうかを調べたいと思います。プロセスは何が起こったのかを知るために10分待つべきではありません。これは、タスクが完了したかどうかを見つけるために、時間間隔でアクションを照会するWebサイト上にあります。どんな良いアイデア? – akd

答えて

0

私は簡単に特定のメッセージに対してトリガージョブのステータスを確認できた方法はありますか?

私の経験に基づいて、トリガーされたジョブの状態を明確に確認する簡単な方法はないと思います。

特定のメッセージのトリガージョブのステータスを知りたい場合は、テーブルを使用してタスクID、キューID、キューメッセージの内容を別のテーブルに格納することをお勧めします。私の意見では、実行タスクとして、実行タスクのログが非常に重要です。

1.キューにキューメッセージを追加すると、キュー情報がテーブルに記録されます。

await _cloudQueue.AddMessageAsync(queueMessage); 

//log the queue message info into a table. 

2.タスクが実行される前と実行された後にウェブジョブをトリガした後、腐食の原因となる情報を記録します。

//log start to execute the queue message 
     await _application.Run(taskInfo.TaskId); 
//log finished executing the queue message. succefully or failed. 

3.タスクがテーブルから終了したかどうかを見つけるために、時間間隔でアクションを照会するテーブル上。

+0

これはまさに私が実装したものです。しかし、私は実際にidによってメッセージのステータスを取得するための組み込みのソリューション(api)があることを期待していました。スケジュールされたジョブにはステータスを取得するのに役立つAPIがいくつかありますが、これは連続実行ジョブの場合とは異なります。 – akd

+0

私が知る限り、キューステータスを取得するためのこのAPIはありません。 –

関連する問題