如何获取QueueTrigger中添加的消息的状态?

时间:2017-11-03 11:47:47

标签: c# azure-webjobs queuetrigger

我有一个连续运行的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);
    }

1 个答案:

答案 0 :(得分: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.在表上查询时间间隔的动作,以查找任务是否从表中完成。