Вопрос

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

Я думал, что смогу использовать JobDetails, но, похоже, он не отражает изменения, внесенные в задание?

Это было полезно?

Решение

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

Внешний поток/процесс также может определить статус, если он опрашивает цель, в которую вы импортируете, и у вас будет где-то информация об общем количестве элементов, которые будут импортированы.

Задания Quartz.NET — это единицы, которые обрабатываются как..ну, и поэтому нет представления о том, сколько еще предстоит сделать.Или вам нужна эта информация для другой работы, которая зависит от процесса импорта?

Другие советы

Это вполне возможно.

Я бы пошел на что-то вроде этого.В работе:

public virtual void Execute(IJobExecutionContext context)
{
    int i = 0;
    while (i++ < 100)
    {
        context.JobDetail.JobDataMap["progress"] = i;
        Thread.Sleep(1000);
    }
}

В коде, который хочет получить прогресс:

var jobs = scheduler.GetCurrentlyExecutingJobs();
foreach (var j in jobs)
{
    Console.WriteLine("Progress of {0} is {1}", 
        j.JobDetail.Key, 
        j.JobDetail.JobDataMap["progress"]);
}

Конечно, вы можете отфильтровать результат GetCurrentlyExecutingJobs.

Кроме того, вы можете установить работу как Durable и PersistJobDataAfterExecution, поэтому после того, как это будет сделано, вы можете просмотреть его прогресс и все остальное через scheduler.GetJobDetail(..) и доступ к его JobDataMap после.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top