ADO.NET с Quartz.NET - PullRequest
       3

ADO.NET с Quartz.NET

5 голосов
/ 29 сентября 2010

Я использую Quartz.NET с базой данных, т.е. ADO.NET.Проблема в том, что когда мои рабочие места создаются, они вообще не сохраняются в базе данных.Я все правильно настроил?Я использую SQL Server Express, и путь к моей базе данных «chris \ sqlexpress.Quartz.dbo».

Соответствующие части файла конфигурации:

quartz.jobStore.type = Quartz.Impl.AdoJobStore.JobStoreTX, Quartz
quartz.jobStore.dataSource = default
quartz.jobStore.tablePrefix = QRTZ_
quartz.jobStore.clustered = true
quartz.jobStore.lockHandler.type = Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz
quartz.jobStore.driverDelegateType = Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz
quartz.dataSource.default.connectionString =
Server=localhost;Database=Quartz;Trusted_Connection=True;";
quartz.dataSource.default.provider = SqlServer-20
quartz.jobStore.useProperties = true

Инициализация планировщика и добавление задания:

ISchedulerFactory schedService = new StdSchedulerFactory();
IScheduler sched = schedService.GetScheduler();

JobDetail jobDetail = new JobDetail("1", "1", typeof(copyJob));
jobDetail.JobDataMap["initialPath"] = initpath;
jobDetail.JobDataMap["targetPath"] = targetpath;
jobDetail.JobDataMap["regex"] = regex;

CronTrigger trigger = new CronTrigger("trigger1", "group1", "1", "1", TextBox4.Text);
sched.AddJob(jobDetail, true);
DateTime ft = sched.ScheduleJob(trigger);
ft = TimeZoneInfo.ConvertTimeFromUtc(ft, trigger.TimeZone);

Response.Write(string.Format("{0} has been scheduled to run at: {1} and repeat based on expression: {2}", jobDetail.FullName, ft.ToString("r"), trigger.CronExpressionString));

Ответы [ 2 ]

5 голосов
/ 29 сентября 2010

Правильно, решил это для всех, кому нужна помощь. Моя строка подключения была неправильной, и мне пришлось жестко кодировать информацию о сервере, как в примере 13 в примерах Quartz.NET. Это отличный фреймворк:)

4 голосов
/ 14 февраля 2014

У меня были похожие проблемы с этим и разделом web.config, по-видимому, игнорируемым, если я по какой-то причине не жестко закодировал свойства.Мне это не понравилось, поэтому в конце я написал код для загрузки свойств из файла web.config и установил их в своем классе StdSchedulerProvider.

//force the properties to be loaded from the web.config section
            NameValueCollection quartzSection = (NameValueCollection)ConfigurationManager.GetSection("quartz");
            if (quartzSection != null)
            {
                var quartzProperties = quartzSection.AllKeys.SelectMany(quartzSection.GetValues, (k, v) => new { key = k, value = v });

                foreach (var property in quartzProperties)
                {
                    properties.Add(property.key, property.value);
                }
            }

Мой раздел web.config выглядит следующим образом:

<configSections>
    <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" />
  </configSections>

    <quartz>
        <add key="quartz.scheduler.instanceName" value="SchedulingPOC"/>
        <add key="quartz.scheduler.instanceId" value="SchedulingPOC"/>

        <!-- Configure Thread Pool -->
        <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
        <add key="quartz.threadPool.threadCount" value="10" />
        <add key="quartz.threadPool.threadPriority" value="Normal" />

        <!-- Configure Job Store -->
        <add key="quartz.jobStore.misfireThreshold" value="60000" />
        <add key="quartz.jobStore.type" value="Quartz.Impl.AdoJobStore.JobStoreTX, Quartz" />
        <add key="quartz.jobStore.useProperties" value="true" />
        <add key="quartz.jobStore.dataSource" value="default" />
        <add key="quartz.jobStore.tablePrefix" value="QRTZ_" />
        <add key="quartz.jobStore.lockHandler.type" value="Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz" />

        <add key="quartz.dataSource.default.connectionString" value="Server=.\SQLExpress;Database=QuartzPOC;Trusted_Connection=True;"/>

        <add key="quartz.dataSource.default.provider" value="SqlServer-20" />
      </quartz>

Quartz.net затем начал входить в базу данных, как я хотел.Понятия не имею, почему так сложно заставить это работать.

...