Petals-SE-Quartz 1.4.x

Scheduling service invocations (Consumes mode)

Usage

Since this component only supports consuming configurations, no WSDL is required.
However, the messages sent by this component must respect the WSDL of the invoked service.
One way to ensure that is to generate the message's XML skeleton from the WSDL of the target service.
A tool like SoapUI works well for this kind of task.

The messages sent by this component are sent with the InOnly pattern.
It is not possible to add file attachments in the sent messages. These messages only have an XML payload.
This message is sent every time the time expression is reached.

Time expressions are CRON expressions. The syntax is explained on the website of the Quartz project.
Below are given some sample CRON expressions and their meaning.

Contributors
CRON expression Meaning
0 0 12 * * ? Fire at 12pm (noon) every day.
0 15 10 ? * * Fire at 10:15am every day.
0 15 10 * * ? 2005 Fire at 10:15am every day during the year 2005.
0 * 14 * * ? Fire every minute starting at 2pm and ending at 2:59pm, every day.
0 0/5 14 * * ? Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day.
0 0/5 14,18 * * ? Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day.
0 0-5 14 * * ? Fire every minute starting at 2pm and ending at 2:05pm, every day.
0 10,44 14 ? 3 WED Fire at 2:10pm and at 2:44pm every Wednesday in the month of March.
0 15 10 ? * MON-FRI Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday.
0 15 10 15 * ? Fire at 10:15am on the 15th day of every month.
0 15 10 L * ? Fire at 10:15am on the last day of every month.
0 15 10 ? * 6L Fire at 10:15am on the last Friday of every month.
0 15 10 ? * 6L Fire at 10:15am on the last Friday of every month.
0 15 10 ? * 6L 2002-2005 Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005.
0 15 10 ? * 6#3 Fire at 10:15am on the third Friday of every month.
0 0 12 1/5 * ? Fire at 12pm (noon) every 5 days every month, starting on the first day of the month.

JBI Descriptor

The Quartz component is configured with a CRON expression, the identifiers of a service to call and an XML message request to send to the service.
You have to deploy a service-unit with a JBI descriptor containing a consumes section with the right parameters.


Here is a sample of a SU JBI descriptor to call a Hello service with <text>hello</text> message, at 10:15am every day during the year 2005.

<?xml version="1.0" encoding="UTF-8"?>

<!-- JBI descriptor for PEtALS' "petals-se-quartz" (QUARTZ), version 1.1 -->
<jbi:jbi version="1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jbi="http://java.sun.com/xml/ns/jbi"
    xmlns:quartz="http://petals.ow2.org/components/quartz/version-1"
    xmlns:petalsCDK="http://petals.ow2.org/components/extensions/version-5"
    xmlns:generatedNs="http://petals.ow2.org/components/hello/version-3.0">

  <jbi:services binding-component="false">
    <jbi:consumes
        interface-name="generatedNs:Hello"
        service-name="generatedNs:HelloSrv"
        endpoint-name="HelloSrvEndpoint">

      <!-- CDK specific elements -->
      <petalsCDK:operation>sayHelloOperation</petalsCDK:operation>
      <petalsCDK:mep>InOnly</petalsCDK:mep>

      <!-- Component specific elements -->
      <quartz:cron-expression>0 15 10 * * ? 2005</quartz:cron-expression>
      <quartz:content><![CDATA[
                           <text>hello</text>
                      ]]></quartz:content>
    </jbi:consumes>
  </jbi:services>
</jbi:jbi>


A JBI descriptor for a Quartz service-unit can only define one consumes block.

Configuration of a Service Unit to consume a service (JBI)

Parameter Description Default Required
consumes Refer JBI service to invoke into the JBI bus.
You can define an explicit endpoint: interface (QName) / Service (QName) / Endpoint (String) attributes.
Or define implicit endpoint, to let the container routing according to QOS configurations (HA...):
-by Interface attribute (QName)
-by Service attribute (QName)
- Yes


Configuration of a Service Unit to consume a service (CDK)

Parameter Description Default Required
mep Message exchange pattern abbreviation. This parameter can be used in conjunction with the method of the CDK Listeners: createMessageExchange(Extensions extensions).
This method returns a CDK Exchange corresponding to the type of the specified pattern.
- Yes
operation Operation to call on a service. This parameter can be used in conjunction with the sending methods of the Listeners. If no operation is specified in the Message Exchange to send, this parameter will be used. - No
timeout Timeout in milliseconds of a synchronous send. This parameter can be used in conjunction with the sendSync(Exchange exchange) method of the Listeners. Set 0 for an infinite timeout. 30000 No


Configuration of a Service Unit to consume a service (Quartz)

Parameter Description Default Required
cron-expression A CRON expression, for example 0 30 10-13 ? * WED,FRI: trigger that fires at 10:30, 11:30, 12:30, and 13:30, on every Wednesday and Friday.
-
Yes
content The XML message to send to the scheduled service. Must be included in a CDATA section, as shown in the sample jbi.xml above.
-
Yes

Interceptor

Example of an interceptor configuration:

<?xml version="1.0" encoding="UTF-8"?>
<!--...-->
<petalsCDK:su-interceptors>
  <petalsCDK:send>
    <petalsCDK:interceptor name="myInterceptorName">
      <petalsCDK:param name="myParamName">myParamValue</petalsCDK:param>
      <petalsCDK:param name="myParamName2">myParamValue2</petalsCDK:param>
    </petalsCDK:interceptor>
  </petalsCDK:send>
  <petalsCDK:accept>
    <petalsCDK:interceptor name="myInterceptorName">
      <petalsCDK:param name="myParamName">myParamValue</petalsCDK:param>
    </petalsCDK:interceptor>
  </petalsCDK:accept>
  <petalsCDK:send-response>
    <petalsCDK:Interceptor name="myInterceptorName">
      <petalsCDK:param name="myParamName">myParamValue</petalsCDK:param>
    </petalsCDK:Interceptor>
  </petalsCDK:send-response>
  <petalsCDK:accept-response>
    <petalsCDK:Interceptor name="myInterceptorName">
      <petalsCDK:param name="myParamName">myParamValue</petalsCDK:param>
    </petalsCDK:Interceptor>
  </petalsCDK:accept-response>
</petalsCDK:su-interceptors>
<!--...-->

Interceptors configuration for SU (CDK)

Parameter Description Default Required
send Interceptor dedicated to send phase, for an exchange sent by a consumer - No
accept Interceptor dedicated to receive phase, for an exchange received by a provider - No
send-response Interceptor dedicated to send phase, for an exchange (a response) received by a consumer - No
accept-response Interceptor dedicated to receive phase, for an exchange sent (a response) by a provider - No
interceptor - name Logical name of the interceptor instance. It can be referenced to add extended parameters by a SU Interceptor configuration. - Yes
param[] - name The name of the parameter to use for the interceptor for this SU - No
param[] The value of the parameter to use for the interceptor for this SU - No

Service-Unit content

The service-unit must only contain the JBI descriptor.

The directory structure of a SU for the Quartz component looks like this:

su-quartz-SchedulerName-consume.zip
   + META-INF
     - jbi.xml

Configuring the component

This component has no specific parameter in its configuration.
It only has the inherited ones from the CDK.

Configuration of the component, CDK part

Parameter Description Default Required Scope
acceptor-pool-size The size of the thread pool used to accept Message Exchanges from the NMR. Once a message is accepted, its processing is delegated to the processor pool thread.
3

Yes

Runtime

acceptor-retry-number Number of tries to submit a message exchange to a processor for processing before to declare that it cannot be processed.
40

No

Installation

acceptor-retry-wait Base duration, in milliseconds, to wait between two processing submission tries. At each try, the new duration is the previous one added by this base duration multiplied by the try number plus a random value between 0 and 10.
250

No

Installation

acceptor-stop-max-wait The max duration (in milliseconds) of the stop of an acceptor before to force it to stop.
500

No

Runtime

message-processor-max-pool-size Max size of the object pool containing message exchange processors.
processor-max-pool-size

No

Runtime

processor-pool-size The size of the thread pool used to process Message Exchanges. Once a message is accepted, its processing is delegated to one of the thread of this pool.
10
Yes

Runtime
processor-max-pool-size The maximum size of the thread pool used to process Message Exchanges. The difference between this size and the processor-pool-size represents the dynamic threads that can be created and destroyed during overhead processing time.
50

No
Runtime

processor-keep-alive-time When the number of processors is greater than the core, this is the maximum time that excess idle processors will wait for new tasks before terminating, in seconds.
300

No
Runtime

processor-stop-max-wait The max duration (in milliseconds) of message exchange processing on stop phase.
15000

No
Runtime

time-beetween-async-cleaner-runs The time (in milliseconds) between two runs of the asynchronous message exchange cleaner.
2000

No
Installation

properties-file Name of the file containing properties used as reference by other parameters. Parameters reference the property name in the following pattern ${myPropertyName}. At runtime, the expression is replaced by the value of the property.

The value of this parameter is :
  • an URL
  • a file relative to the PEtALS installation path
  • an empty value to stipulate a non-using file
-
No
Installation
monitoring-sampling-period Period, in seconds, of a sample used by response time probes of the monitoring feature.
300

No
Installation

Definition of CDK parameter scope :

  • Installation: The parameter can be set during the installation of the component, by using the installation MBean (see JBI specifications for details about the installation sequence). If the parameter is optional and has not been defined during the development of the component, it is not available at installation time.
  • Runtime: The paramater can be set during the installation of the component and during runtime. The runtime configuration can be changed using the CDK custom MBean named RuntimeConfiguration. If the parameter is optional and has not been defined during the development of the component, it is not available at installation and runtime times.

Interceptor

Interceptors can be defined to inject some post or pre processing in the component during service processing.

Using interceptor is very sensitive and must be manipulate only by power users. An non properly coded interceptor engaged in a component can lead to uncontrolled behaviors, out of the standard process.

Example of an interceptor configuration:

<?xml version="1.0" encoding="UTF-8"?>
<!--...-->
<petalsCDK:component-interceptors>
  <petalsCDK:interceptor active="true" class="org.ow2.petals.myInterceptor" name="myInterceptorName">
    <petalsCDK:param name="myParamName">myParamValue</petalsCDK:param>
    <petalsCDK:param name="myParamName2">myParamValue2</petalsCDK:param>
  </petalsCDK:interceptor>
</petalsCDK:component-interceptors>
<!--...-->

Interceptors configuration for Component (CDK)

Parameter Description Default Required
interceptor - class Name of the interceptor class to implement. This class must extend the abstract class org.ow2.petals.component.common.interceptor.Interceptor. This class must be loadable from the component classloader, or in a dependent Shared Library classloader. - Yes
interceptor - name Logical name of the interceptor instance. It can be referenced to add extended parameters by a SU Interceptor configuration. - Yes
interceptor - active If true, the Interceptor instance is activated for every SU deployed on the component.
If false, the Interceptor can be activated:
-by the InterceptorManager Mbean at runtime, to activate the interceptor for every deployed SU.
-by a SU configuration
- Yes
param[] - name The name of the parameter to use for the interceptor. - No
param[] The value of the parameter to use for the interceptor. - No

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.