0

我有一个连续运行的 webjob 被触发来执行后台任务。当工作被触发完成工作时,我找不到跟踪或检查工作是否成功完成的方法。

有没有一种方法可以轻松检查特定消息的触发作业的状态?

 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);
    }
4

1 回答 1

0

有没有一种方法可以轻松检查特定消息的触发作业的状态?

根据我的经验,我认为没有一种简单的方法可以检查触发作业的状态和特定消息。

如果您想知道特定消息的触发作业的状态,我建议您可以使用一个表将任务 ID、队列 ID、队列消息内容存储在另一个表中。在我看来,作为一个执行任务,执行任务的日志非常重要。

1.将队列消息添加到队列后,您将队列信息云记录到表中。

 await _cloudQueue.AddMessageAsync(queueMessage);

 //log the queue message info into a table.

2.在任务运行前和任务运行后触发webjob,然后记录相应的信息。

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

3.对表查询一个动作的时间间隔,从表中查找任务是否完成。

于 2017-11-06T07:12:58.870 回答