c# - segundo - hangfire vs quartz
Datos de tareas recurrentes de HangFire (1)
Estás cerca. No estoy seguro de si hay una forma mejor o más directa para obtener estos detalles, pero la forma en que lo hace es utilizar un método de extensión (agregar using Hangfire.Storage;
a sus importaciones) llamado GetRecurringJobs()
:
using (var connection = JobStorage.Current.GetConnection())
{
var recurring = connection.GetRecurringJobs().FirstOrDefault(p => p.Id == "AccountMonthlyActionExtendPaymentSubscription");
if (recurring == null)
{
// recurring job not found
Console.WriteLine("Job has not been created yet.");
}
else if (!recurring.NextExecution.HasValue)
{
// server has not had a chance yet to schedule the job''s next execution time, I think.
Console.WriteLine("Job has not been scheduled yet. Check again later.");
}
else
{
Console.WriteLine("Job is scheduled to execute at {0}.", recurring.NextExecution);
}
}
Hay dos capturas:
- Devuelve todos los trabajos recurrentes, y necesitará seleccionar el registro apropiado del resultado
- Cuando crea el trabajo por
NextExecution
vez, la horaNextExecution
todavía no está disponible (será nulo). Creo que el servidor, una vez que se conecta, revisa periódicamente las tareas recurrentes que deben programarse y lo hace; no parecen programarse inmediatamente después de la creación usandoRecurringJob.AddOrUpdate(...)
u otros métodos similares. Si necesita obtener ese valor deNextExecution
inmediatamente después de la creación, no estoy seguro de lo que puede hacer. Eventualmente será poblado, sin embargo.
Estoy codificando una aplicación de Internet MVC 5 y estoy usando HangFire
para tareas recurrentes.
Si tengo una tarea periódica mensual, ¿cómo puedo obtener el valor del próximo tiempo de ejecución?
Aquí está mi código para la tarea recurrente:
RecurringJob.AddOrUpdate("AccountMonthlyActionExtendPaymentSubscription", () => accountService.AccountMonthlyActionExtendPaymentSubscription(), Cron.Monthly);
Puedo recuperar los datos del trabajo de la siguiente manera:
using (var connection = JobStorage.Current.GetConnection())
{
var recurringJob = connection.GetJobData("AccountMonthlyActionExtendPaymentSubscription");
}
Sin embargo, no estoy seguro de qué hacer a continuación.
¿Es posible obtener el próximo tiempo de ejecución de una tarea recurrente?
Gracias por adelantado.