zoukankan      html  css  js  c++  java
  • Quartz.NET在ASP.NET 中使用

    Quartz.NET 项目地址 http://quartznet.sourceforge.net/
    common logging是一个通用日志接口,log4net是一个具体实现 ,也可以使用NLog,EntLib等(一定注意版本,我就在log4j配置上浪费了好长时间)。

    private IScheduler sched;
            private readonly ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            /// <summary>
            ///  应用程序启动
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void Application_Start(object sender, EventArgs e)
            {
                //初始化调度器工厂
                ISchedulerFactory schedFact = new StdSchedulerFactory();
                //创建调度器
                sched = schedFact.GetScheduler();
                //创建任务
                IJobDetail job = JobBuilder.Create<HomeinnsUpdatePriceJob>().WithIdentity("job1", "group1").Build();
                //创建任务触发器
                ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create().WithIdentity("trigger1", "group1").WithCronSchedule(ConfigurationManager.AppSettings["cronExpr"]).Build();
                sched.ScheduleJob(job, trigger);
                sched.Start();
                logger.Info("Quartz服务成功启动");
            }
            /// <summary>
            /// 应用程序关闭
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void Application_End(object sender, EventArgs e)
            {
                if (sched != null)
                {
                    sched.Shutdown(true);
                    logger.Info("Quartz服务成功终止");
                }
            }

    配置

    <?xml version="1.0" encoding="utf-8"?>
    
    <!--
      有关如何配置 ASP.NET 应用程序的详细消息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    <configuration>
      <configSections>
        <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
        <sectionGroup name="common">
          <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
        </sectionGroup>
      </configSections>
      <common>
        <logging>
          <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
            <arg key="configType" value="INLINE" />
          </factoryAdapter>
        </logging>
      </common>
      <log4net>
        <appender name="InfoFileAppender" type="log4net.Appender.RollingFileAppender">
          <file value="log/" />
          <appendToFile value="true" />
          <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
          <rollingStyle value="Date" />
          <maxSizeRollBackups value="100" />
          <maximumFileSize value="1024KB" />
          <staticLogFileName value="false" />
          <Encoding value="UTF-8" />
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="INFO" />
            <param name="LevelMax" value="INFO" />
          </filter>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %-5level %logger  - %message%newline" />
          </layout>
        </appender>
        <appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender">
          <file value="log/error.txt" />
          <appendToFile value="true" />
          <rollingStyle value="Size" />
          <maxSizeRollBackups value="100" />
          <maximumFileSize value="10240KB" />
          <staticLogFileName value="true" />
          <Encoding value="UTF-8" />
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="WARN" />
            <param name="LevelMax" value="FATAL" />
          </filter>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date %-5level %logger - %message%newline" />
          </layout>
        </appender>
        <root>
          <level value="INFO" />
          <appender-ref ref="InfoFileAppender" />
          <appender-ref ref="ErrorFileAppender" />
        </root>
      </log4net>
    
      <quartz>
        <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler" />
        <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.misfireThreshold" value="60000" />
        <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
      </quartz>
      <appSettings>
        <add key="cronExpr" value="0/10 * * * * ?" />
      </appSettings>
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
      </system.web>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-2.1.2.0" newVersion="2.1.2.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>

    Refer:
    Quartz.NET 2.0 配置文件详解
    http://www.cnblogs.com/h20064528/archive/2012/07/17/2595636.html
    Window服务
    http://www.cnblogs.com/lzrabbit/archive/2012/04/15/2448326.html
    DUDU
    http://www.cnblogs.com/dudu/archive/2011/04/04/quartz_net.html
    Failed obtaining configuration for Common.Logging from configuration section 'common/logging'
    http://stackoverflow.com/questions/11368267/failed-obtaining-configuration-for-common-logging-from-configuration-section-co

  • 相关阅读:
    在eclipse外边打开浏览器
    双开Eclipse
    6.5版本的CentOSLinux
    Intel x86_64 Architecture Background 3
    Java 大数、高精度模板
    Intel x86_64 Architecture Background 2
    Intel x86_64 Architecture Background 1
    Codeforces 999D Equalize the Remainders (set使用)
    Codeforces 996E Leaving the Bar (随机化)
    欧拉函数(小于或等于n的数中与n互质的数的数目)&& 欧拉函数线性筛法
  • 原文地址:https://www.cnblogs.com/Irving/p/3423352.html
Copyright © 2011-2022 走看看