The QuartzComponent integrates with the Quartz open source scheduler library. This allows ServiceMix to trigger service invocations at timed intervals to perform periodic tasks.


Here's an example of configuring a quartz component. You can add as many triggers as you wish to the component, at different timing intervals.

<sm:activationSpec componentName="timer" service="my:timer" destinationService="my:receiver">
  <sm:component><bean class="org.apache.servicemix.components.quartz.QuartzComponent">
    <property name="triggers">
      <map>
        <entry>
          <key>
            <bean class="org.quartz.SimpleTrigger">
              <property name="repeatInterval" value="200"/>
              <property name="repeatCount" value="20"/>
            </bean>
          </key>
            <bean class="org.quartz.JobDetail">
              <property name="name" value="My Example Job"/>
              <property name="group" value="ServiceMix"/>
            </bean>
        </entry>
      </map>
    </property>
  </bean></sm:component>
</sm:activationSpec>

Notes:

  • The SimpleTrigger repeatCount value count is starting at zero, meaning repeatCount=0 triggers once, repeatCount=1 triggers twice etc. (Quartz v1.5)
  • Maybe properties like description or durability are interesting for you - for further details refer to the Quartz project JobDetail JavaDoc API.



A number of properties can be configured on the component:

  • marshaler: a class implementing the QuartzMarshaler interface which populates the JBI exchange. The default one will create something like:
    <timer>
      <name>My Example Job</name>
      <group>ServiceMix</group>
      <fullname>ServiceMix.My Example Job</fullname>
      <description/>
      <fireTime>Thu Oct 05 10:54:32 CEST 2006</fireTime>
    </timer>
    

    To get some hints on how to set up a marshaler, you may do such a Google Code search revealing how other marshalers are set up in static configuration files (like servicemix.xml). You will figure out that you have to create a silbing of <property name="triggers"> containing this code:

    <property name="marshaler">
            <bean class="org.apache.servicemix.components.quartz.DefaultQuartzMarshaler" />
    </property>
    
  • scheduler the Quartz scheduler to use. If not specified, the factory will be used to create it.