Batch acquisition of 0 triggers

3,834 views
Skip to first unread message

Michael Hachen

unread,
Dec 2, 2014, 2:46:33 AM12/2/14
to quar...@googlegroups.com, Michael Hachen
Hi there

I have used Quartz.NET in several Projects but with the newest one I got a problem which I can't solve. I use cron-expressions to get a job fired every 15 min. Please have a look at the following files:
auartz.config
# You can configure your scheduler in either <quartz> configuration section
# or in quartz properties file
# Configuration section has precedence
quartz.scheduler.instanceName = ServerScheduler
# configure thread pool info
quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz
quartz.threadPool.threadCount = 10
quartz.threadPool.threadPriority = Normal
# job initialization plugin handles our xml reading, without it defaults are used
quartz.plugin.xml.type = Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz
quartz.plugin.xml.fileNames = ~/quartz_jobs.xml
# export this server to remoting context
quartz.scheduler.exporter.type = Quartz.Simpl.RemotingSchedulerExporter, Quartz
quartz.scheduler.exporter.port = 555
quartz.scheduler.exporter.bindName = QuartzScheduler
quartz.scheduler.exporter.channelType = tcp
quartz.scheduler.exporter.channelName = httpQuartz

Quartz.Server.exe.config
<?xml version="1.0" encoding="utf-8"?>
<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.Log4net1213">
    <arg key="configType" value="INLINE" />
   </factoryAdapter>
  </logging>
 </common>
 <log4net>
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
   <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%t] %-5p %l - %m%n" />
   </layout>
  </appender>
  <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
   <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%d [%t] %-5p %l - %m%n" />
   </layout>
  </appender>
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <param name="File" value="Logging\\QuartzLog.txt"/>
      <param name="AppendToFile" value="true"/>
      <rollingStyle value="Size"/>
      <maxSizeRollBackups value="10"/>
      <maximumFileSize value="10MB"/>
      <staticLogFileName value="true"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%date{dd.MM.yyyy HH:mm:ss,fff} - [%t] - %-5p - %message%newline"/>
      </layout>
    </appender>
  <root>
   <level value="DEBUG" />
   <appender-ref ref="LogFileAppender" />
   <!-- <appender-ref ref="ConsoleAppender" /> -->
      <!-- uncomment to enable event log appending -->
   <!-- <appender-ref ref="EventLogAppender" /> -->
  </root>
 </log4net>
  <!--
    We use quartz.config for this server, you can always use configuration section if you want to.
    Configuration section has precedence here. 
  -->
 <!--
  <quartz >
  </quartz>
  -->
  <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.3.1.0" newVersion="2.3.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.2.13.0" newVersion="1.2.13.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>


quartz_jobs.XML
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file contains job definitions in schema version 2.0 format -->
  <processing-directives>
    <overwrite-existing-data>true</overwrite-existing-data>
  </processing-directives>
  <schedule>
    <job>
        <name>OpenEmmSyncJob</name>
        <group>OpenEmmSyncGroup</group>
        <description>Sample job for Quartz Server</description>
        <job-type>ProIT.CobraOpenNewsletter.SyncJob.OpenEmmSyncJob, ProIT.CobraOpenNewsletter.SyncJob</job-type>
        <durable>true</durable>
        <recover>false</recover>
    </job>
    <trigger>
      <cron>
        <name>OpenEmmSyncTrigger</name>
        <group>OpenEmmSyncTriggerGroup</group>
        <description>Fires open emm sync job</description>
        <job-name>OpenEmmSyncJob</job-name>
        <job-group>OpenEmmSyncGroup</job-group>
        <misfire-instruction>SmartPolicy</misfire-instruction>
        <cron-expression>0 0 15 ? * MON-SUN</cron-expression>
      </cron>
    </trigger>
  </schedule>
</job-scheduling-data>


Log-File:
02.12.2014 08:36:45,289 - [1] - INFO  - Quartz.NET properties loaded from configuration file 'D:\temp\PPR\quartz.config'
02.12.2014 08:36:45,406 - [1] - INFO  - Using default implementation for object serializer
02.12.2014 08:36:45,431 - [1] - INFO  - Using default implementation for ThreadExecutor
02.12.2014 08:36:45,481 - [1] - INFO  - Initialized Scheduler Signaller of type: Quartz.Core.SchedulerSignalerImpl
02.12.2014 08:36:45,484 - [1] - INFO  - Quartz Scheduler v.2.3.0.18 created.
02.12.2014 08:36:45,503 - [1] - INFO  - Registering Quartz Job Initialization Plug-in.
02.12.2014 08:36:45,515 - [1] - INFO  - RAMJobStore initialized.
02.12.2014 08:36:45,553 - [1] - INFO  - Remoting is allowing remote calls
02.12.2014 08:36:45,553 - [1] - INFO  - Registering remoting channel of type 'System.Runtime.Remoting.Channels.Tcp.TcpChannel' to port (555) with name (httpQuartz)
02.12.2014 08:36:45,554 - [1] - INFO  - Remoting channel registered successfully
02.12.2014 08:36:45,555 - [1] - INFO  - Successfully marhalled remotable scheduler under name 'QuartzScheduler'
02.12.2014 08:36:45,572 - [1] - INFO  - Scheduler meta-data: Quartz Scheduler (v2.3.0.18) 'ServerScheduler' with instanceId 'NON_CLUSTERED'
  Scheduler class: 'Quartz.Core.QuartzScheduler' - access via remote incovation.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'Quartz.Simpl.SimpleThreadPool' - with 10 threads.
  Using job-store 'Quartz.Simpl.RAMJobStore' - which does not support persistence. and is not clustered.
02.12.2014 08:36:45,573 - [1] - INFO  - Quartz scheduler 'ServerScheduler' initialized
02.12.2014 08:36:45,574 - [1] - INFO  - Quartz scheduler version: 2.3.0.18
02.12.2014 08:36:45,662 - [16] - INFO  - Parsing XML file: D:\temp\PPR\quartz_jobs.xml with systemId: ~/quartz_jobs.xml
02.12.2014 08:36:45,999 - [16] - DEBUG - Found 0 delete job group commands.
02.12.2014 08:36:45,999 - [16] - DEBUG - Found 0 delete trigger group commands.
02.12.2014 08:36:45,999 - [16] - DEBUG - Found 0 delete job commands.
02.12.2014 08:36:45,999 - [16] - DEBUG - Found 0 delete trigger commands.
02.12.2014 08:36:45,999 - [16] - DEBUG - Directive 'overwrite-existing-data' specified as: True
02.12.2014 08:36:46,000 - [16] - DEBUG - Directive 'ignore-duplicates' specified as: False
02.12.2014 08:36:46,000 - [16] - DEBUG - Directive 'schedule-trigger-relative-to-replaced-trigger' specified as: False
02.12.2014 08:36:46,000 - [16] - DEBUG - Found 1 job definitions.
02.12.2014 08:36:46,009 - [16] - DEBUG - Parsed job definition: JobDetail 'OpenEmmSyncGroup.OpenEmmSyncJob':  jobType: 'ProIT.CobraOpenNewsletter.SyncJob.OpenEmmSyncJob persistJobDataAfterExecution: False concurrentExectionDisallowed: False isDurable: True requestsRecovers: False
02.12.2014 08:36:46,010 - [16] - DEBUG - Found 1 trigger definitions.
02.12.2014 08:36:46,091 - [16] - DEBUG - Parsed trigger definition: Trigger 'OpenEmmSyncTriggerGroup.OpenEmmSyncTrigger':  triggerClass: 'Quartz.Impl.Triggers.CronTriggerImpl calendar: '' misfireInstruction: 0 nextFireTime:
02.12.2014 08:36:46,115 - [16] - INFO  - Adding 1 jobs, 1 triggers.
02.12.2014 08:36:46,123 - [16] - INFO  - Adding job: OpenEmmSyncGroup.OpenEmmSyncJob
02.12.2014 08:36:46,135 - [16] - DEBUG - Scheduling job: OpenEmmSyncGroup.OpenEmmSyncJob with trigger: OpenEmmSyncTriggerGroup.OpenEmmSyncTrigger
02.12.2014 08:36:46,225 - [16] - INFO  - Scheduler ServerScheduler_$_NON_CLUSTERED started.
02.12.2014 08:36:46,227 - [16] - INFO  - Scheduler started successfully


I use the latest version of Quartz.net (Quartz.dll = 2.3.0.18, Quartz.Server.exe = 2.2.4.400).

The Job isn't executed I just get the following line every 30 seconds:
02.12.2014 08:36:46,289 - [ServerScheduler_QuartzSchedulerThread] - DEBUG - Batch acquisition of 0 triggers

What am I doing wrong?
Thank you very much for your help!
Mike


Marko Lahma

unread,
Dec 2, 2014, 3:30:07 AM12/2/14
to quar...@googlegroups.com
"0 0 15 ? * MON-SUN" is not every 15 minutes. It's every time when
hours hits 15 (3 pm).

Maybe "0 0/15 * * * ?" could do the trick?

-Marko
> --
> You received this message because you are subscribed to the Google Groups
> "Quartz.NET" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to quartznet+...@googlegroups.com.
> To post to this group, send email to quar...@googlegroups.com.
> Visit this group at http://groups.google.com/group/quartznet.
> For more options, visit https://groups.google.com/d/optout.
>
Message has been deleted

Michael Hachen

unread,
Dec 2, 2014, 4:18:33 AM12/2/14
to quar...@googlegroups.com
Damn... I was blind, stupid mistake! Thank you very much!!

copy & paste is evil!;)

Thanks, Mike

Mark Gillen

unread,
Dec 2, 2014, 8:24:31 AM12/2/14
to quar...@googlegroups.com
FYI:

This site is invaluable for creating CRON expressions...

http://www.cronmaker.com/



Best Regards,
Mark Gillen

Jay Vilalta

unread,
Dec 2, 2014, 10:37:58 AM12/2/14
to quar...@googlegroups.com
FWIW, I've put together a really basic page that evaluates cron expressions using Quartz.Net's CronExpression class. It's pretty basic but it catches things like these. Input a cron expression and see the next 10 fire times:

http://jayvilalta.com/quartznet/cronexpression

J


Mark Gillen

unread,
Dec 2, 2014, 12:30:01 PM12/2/14
to quar...@googlegroups.com
Yea, that's a nice complement to the www.cronmaker.com site!

Thanks, Jay.

Best Regards,
Mark Gillen

Michael Hachen

unread,
Dec 5, 2014, 2:54:22 AM12/5/14
to quar...@googlegroups.com
Hi Mark, hi Jay

Thank you for the links, very helpful!

Best regards
Mike
Reply all
Reply to author
Forward
0 new messages