Domanda

C'è un modo facile per un IJob di pubblicare i dati dall'interno del lavoro. Ho un lavoro che esegue un processo di importazione, ma vorrei recuperare i progressi, cercando il lavoro e che ne facciano richiesta.

Ho pensato che io possa essere in grado di utilizzare i JobDetails, ma non sembra riflettere le modifiche apportate all'interno del lavoro?

È stato utile?

Soluzione

Non c'è un built-in modo che possa dare facilmente la cosa che stai cercando. Ma non è così difficile pubblicare informazioni di avanzamento per qualche altra struttura tramite Pubblica Sottoscrivi neanche. Si potrebbe anche scrivere periodicamente i progressi informazioni in un archivio permanente -. Che avrebbe anche darvi il vantaggio di facile tentativi quando si conosce l'ultimo bit di successo che è stato elaborato

Un fuori discussione / processo potrebbe anche determinare lo stato interrogato se la destinazione in cui si sta importando e si dovrebbe avere da qualche parte le informazioni su elementi totali che stanno per essere importati.

posti di lavoro

Quartz.NET sono unità che vengono elaborati come un .. bene all'unità e quindi non c'è il concetto di quanto ci sia ancora da fare. O avete bisogno di queste informazioni in un altro lavoro che dipende dal processo di importazione?

Altri suggerimenti

E 'del tutto possibile.

Vorrei andare con qualcosa di simile. Nel lavoro:

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

Nel codice che vuole recuperare il progresso:

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

È possibile filtrare risultato di GetCurrentlyExecutingJobs, naturalmente.

Inoltre, è possibile impostare lavoro da Durable e PersistJobDataAfterExecution, così dopo che è fatto, è possibile recuperare il suo progresso e quant'altro tramite scheduler.GetJobDetail(..) e l'accesso ai suoi JobDataMap in seguito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top