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