Как получить статус сообщения, которое добавлено в 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);
    }

1 ответ

Есть ли способ, которым я мог бы легко проверить состояние запущенного задания для конкретного сообщения?

Исходя из моего опыта, я не думаю, что есть простой способ проверить статус запущенной работы в отдельном порядке.

Если вы хотите узнать состояние запущенного задания для определенного сообщения, я рекомендую вам использовать таблицу для хранения идентификатора задачи, идентификатора очереди, содержимого сообщения очереди в другой таблице. На мой взгляд, как задача выполнения, журнал выполнения задачи очень важен.

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.На столе запросить действие по временному интервалу, чтобы определить, закончилась ли задача из таблицы.

Другие вопросы по тегам