¿Qué es quartz.net cómo empezar a usarlo?Quartz.net para novatos
Respuesta
sugerimos que comience con el tutorial para Quartz.Net en http://quartznet.sourceforge.net/tutorial/index.html
Puede mirar los ejemplos en las carpetas \ src Quartz.Examples.
Primero debe pensar en algunos puntos, si desea usar el Quartz en la memoria o almacenar en una base de datos, se iniciará un servidor, etc. Después de eso, debe crear una clase para administrar su Schedule y otro que contiene el Trabajo que desea ejecutar, lo que estoy diciendo es un ejemplo simple. Demostraré cómo hacerlo en el siguiente escenario: Sqlite para almacenar datos, una clase de trabajo con registro y todo lo demás con registro. Y se ejecutará todos los días a las 10:30 a.m.
su web.config
<add key="quartz.scheduler.instanceName" value="ServerScheduler" />
<add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
<add key="quartz.threadPool.threadCount" value="10" />
<add key="quartz.threadPool.threadPriority" value="2" />
<add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
<add key="quartz.jobStore.dataSource" value="default" />
<add key="quartz.dataSource.default.connectionString" value="Data Source=yourdb.db;Version=3;Foreign Keys=ON;" />
<add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
<add key="quartz.jobStore.clustered" value="false" />
<add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />
<add key="quartz.jobStore.driverDelegateType" value="Quartz.Impl.AdoJobStore.StdAdoDelegate, Quartz" />
<add key="quartz.dataSource.default.provider" value="SQLite-1094" />
<add key="quartz.jobStore.useProperties" value="true" />
<add key="quartz.scheduler.exporter.type" value="Quartz.Simpl.RemotingSchedulerExporter, Quartz" />
<add key="quartz.scheduler.exporter.port" value="555" />
<add key="quartz.scheduler.exporter.bindName" value="QuartzScheduler" />
<add key="quartz.scheduler.exporter.channelType" value="tcp" />
Crear una clase llamada Schedule.cs:
public static class Schedule
{
private static readonly ILog logger = LogManager.GetLogger(typeof(Schedule));
public static ITrigger BuildTrigger(int hour, int minute)
{
var trigger = TriggerBuilder.Create()
.StartNow()
.WithSchedule(CronScheduleBuilder.DailyAtHourAndMinute(hour,minute))
.Build();
return trigger;
}
public static IScheduler InicializarScheduler()
{
var scheduleMigracao = Schedule.GetScheduler();
if (!scheduleMigracao.IsStarted)
scheduleMigracao.Start();
logger.Info("Scheduler started successfully");
return scheduleMigracao;
}
public static IJobDetail BuildJogDetail<T>(string WorkFlowId, string Group) where T : IJob
{
return JobBuilder.Create<T>()
.WithIdentity(WorkFlowId, Group)
.RequestRecovery()
.Build();
}
private static IScheduler GetScheduler()
{
try
{
IScheduler scheduler = SchedulerRepository.Instance.Lookup("DefaultQuartzScheduler");
if (scheduler == null)
{
var factoryScheduler = new StdSchedulerFactory();
return factoryScheduler.GetScheduler();
}
else
{
return scheduler;
}
}
catch (Exception ex)
{
logger.Error("Server initialization failed:" + ex.Message, ex);
throw;
}
}
}
Crear una clase llamada TestJob.cs
public class TestJob : IInterruptableJob
{
private static readonly ILog Log = LogManager.GetLogger(typeof(TestJob));
public void Interrupt()
{
}
public void Execute(IJobExecutionContext context)
{
try
{
Log.DebugFormat("{0}****{0}Job {1} Start @ {2} next scheduled for {3}{0}***{0}",
Environment.NewLine,
context.JobDetail.Key,
context.FireTimeUtc.Value.ToString("r"),
context.NextFireTimeUtc.Value.ToString("r"));
//implement your logic
Log.DebugFormat("{0}****{0}Job {1} executed with sucess at @ {2}",
Environment.NewLine,
context.JobDetail.Key,
context.FireTimeUtc.Value.ToString("r"));
}
catch (Exception ex)
{
Log.DebugFormat("{0}***{0}Failed: {1}{0}***{0}", Environment.NewLine, ex.Message);
}
}
}
en su lugar Global.asax :
public class Global : System.Web.HttpApplication
{
private static void BuildingQuartzMetadataSqLite1090()
{
var metaData = new DbMetadata();
metaData.AssemblyName = "System.Data.SQLite, Version = 1.0.94.0,Culture=neutral, PublicKeyToken=db937bc2d44ff139";
metaData.BindByName = true;
metaData.CommandBuilderType = typeof(System.Data.SQLite.SQLiteCommandBuilder);
metaData.CommandType = typeof(System.Data.SQLite.SQLiteCommand);
metaData.ConnectionType = typeof(System.Data.SQLite.SQLiteConnection);
metaData.ExceptionType = typeof(System.Data.SQLite.SQLiteException);
metaData.ParameterDbType = typeof(System.Data.SQLite.TypeAffinity);
metaData.ParameterDbTypePropertyName = "DbType";
metaData.ParameterNamePrefix = "@";
metaData.ParameterType = typeof(System.Data.SQLite.SQLiteParameter);
metaData.UseParameterNamePrefixInParameterCollection = true;
DbProvider.RegisterDbMetadata("SQLite-1094",metaData);
}
protected void Application_Start(object sender, EventArgs e)
{
BuildingQuartzMetadataSqLite1090();
Schedule.InicializarScheduler();
Schedule.ScheduleJob(Schedule.BuildJogDetail<TestJob>("TestJob","GrupoTest"), Schedule.BuildTrigger(10, 30));
}
}
Cualquier pregunta simplemente pregunte
- 1. Lenguaje F # - sugerencias para los novatos
- 2. Tricky Quartz.NET Escenario
- 3. Autofac y Quartz.Net Integración
- 4. Quartz.Net CronExpression Builder
- 5. manija en Quartz.net
- 6. Quartz.Net - Cada 3 meses
- 7. php pregunta para novatos: ¿destruir objeto de clase?
- 8. Documentación STArray para novatos y preguntas relacionadas con State/ST
- 9. Quartz.Net Job Storage Query
- 10. Documentación del servidor Quartz.NET
- 11. ADO.NET con Quartz.NET
- 12. ncurses novatos - comenzando con GNU C
- 13. Cómo usar Quartz.net con ASP.NET
- 14. Combinación de Quartz.Net con UI
- 15. Quartz.NET, NH ISession & Ninject Scope
- 16. Quartz.NET, repiten cada x semanas
- 17. Quartz.Net cron gatillo para programar un trabajo cada 45 minutos
- 18. Necesito una forma menos repetitiva para iniciar Rails en Mac para novatos
- 19. Quartz.NET - ¿Los trabajos no se ejecutan?
- 20. Programación de trabajos dependientes en Quartz.Net
- 21. Simple, ejemplo de trabajo de Quartz.net
- 22. quartz.net de config xml en asp.net
- 23. aplicación Quartz.NET hace no jive con tutoriales
- 24. ASP.Net MVC 3, Ninject y Quartz.Net - ¿Cómo?
- 25. ¿La forma correcta de deshacerse de Quartz.NET?
- 26. Programe el servicio de Windows con Quartz.NET
- 27. OSGi vs Spring vs Struts vs EJB vs. Hibernate - una pregunta totalmente para novatos
- 28. pregunta para novatos de OpenGL: ¿qué es la eliminación de caras traseras?
- 29. ¿Los productos de Visual Studio Express son solo para "aficionados, estudiantes y novatos"?
- 30. ¿Cómo hacer que el proceso Quartz.NET sea sincronizado?