2009-01-22 16 views

उत्तर

1

पर Quartz.Net के लिए ट्यूटोरियल के साथ शुरू आप फ़ोल्डर src \ Quartz.Examples में उदाहरणों पर गौर कर सकते हैं।

-1

आपको पहले कुछ बिंदुओं के बारे में सोचना होगा, अगर मेमोरी में क्वार्ट्ज का उपयोग करना या डेटाबेस में संग्रहीत करना चाहते हैं, तो यह एक सर्वर शुरू करेगा, आदि इसके बाद आपको अपनी अनुसूची प्रबंधित करने के लिए कक्षा बनाना होगा और एक और नौकरी जिसमें आप दौड़ना चाहते हैं, जो मैं कह रहा हूं वह एक साधारण उदाहरण है। मैं निम्नलिखित परिदृश्य में यह कैसे करना होगा: डेटा स्टोर करने के लिए स्क्लाइट, लॉग के साथ एक जॉब क्लास और लॉग के साथ बाकी सब कुछ। और हर दिन सुबह 10:30 बजे चलाया जाएगा।

अपने 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" /> 

एक वर्ग 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; 
     } 
    } 
} 

एक कक्षा बनाएं बुलाया 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); 
     } 
    } 
} 

अपने 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)); 
    } 
} 

कोई प्रश्न सिर्फ

से पूछें
संबंधित मुद्दे