Skip navigation

QuartzプロバイダはESB Muleのスケジューリング機能を追加します。このプロバイダはOpenSymphonyQuartzに基づいています。

このトランスポート・プロバイダのJavadocはここにあります。
ソースコードはここにあります。

Quartzコネクタのプロパティ

プロパティ 説明 デフォルト 必須
factoryClassName スケジューラ・ファクトリのクラス名。普通はこのプロパティを変更しません。 org.quartz.impl.StdSchedulerFactory ×
factoryProperties スケジューラ・ファクトリをカスタマイズするためのプロパティ・オブジェクト。   ×
factory ある場合は、org.quartz.SchedulerFactoryのインスタンスを設定することができます。   ×
scheduler スケジューラ・プロパティを既存スケジューラに設定することができます。   ×

Quartzエンドポイントのプロパティ

プロパティ 説明 デフォルト 必須
cronExpression 特定の日付・時間にイベントをスケジュールするcron文。   cron 又は repeatInterval
repeatInterval イベントの間隔(ミリ秒)。   cron 又は repeatInterval
repeatCount スケジュールする回数。デフォルト設定の-1は、無限を意味する。 -1 ×
startDelay 最初のイベントを起こすまでの待ち時間。(ミリ秒) 0 ×
groupName スケジュール・ジョブのグループ名。 mule ×
jobGroupName スケジュール・ジョブのジョブ・グループ名。 mule ×

その他にジョブによって指定が必要なプロパティ。以下は、一般的なESB Muleジョブの設定例です。

ジョブ

ESB Muleはイベントをスケジュールするために、デフォルトで以下のジョブの実装を提供しています:

  • Mule Receiver Job - ESB Muleコンポーネントにイベントをスケジュールする受信エンドポイント・ジョブ。
  • Delegating Job - ESB Muleイベントのジョブをスケジュールする送信エンドポイント・ジョブ。
  • Mule Client Dispatch Job - 指定されたエンドポイントURIにイベントを発行する、送信エンドポイント・ジョブ。
  • Mule Client Receiver Job - エンドポイントから受信して他エンドポイントに結果を送信する、送信エンドポイント・ジョブ。

以下に各実装に付いての説明を行います:

Mule Receiver Job(ESB Mule受信ジョブ)

コンポーネントに inbound quartzエンドポイントが設定された場合に使うジョブ。エンドポイントに設定によって、コンポーネントが受信するイベントをトリガーする。

簡単なエンドポイントは以下のように設定することができます:

<endpoint address="quartz:/myService">
    <properties>
        <property name="repeatInterval" value="1000" />
        <property name="payloadClassName" value="com.foo.bar.Payload" />
    </properties>
</endpoint>

上の設定をURIで指定することもできます:

<endpoint address="quartz:/myService?repeatInterval=1000&amp;payloadClassName=com.foo.bar.Payload" />

ペイロードのイベントの設定

ペイロードは下の 相互排除的 なプロパティを使ってエンドポイントに設定することができます:

プロパティ 説明
payload このぱプロパティの値を使う。
payloadRef コンテナ内のオブジェクトへの参照。例えば、Jndi, SpringやClassloaderコンテナ内のオブジェクト。

いずれかのプロパティが設定されていない場合は org.mule.providers.NullPayload が使われます。

ESB Mule委託ジョブ

QuartzエンドポイントをディスパッチしたESB Muleイベントを呼び出したジョブ・オブジェクトを抽出します。ジョブはイベントのプロパティ(プロパティはコンテナ参照又は実際のジョブ・オブジェクトを指定することが可能)として設定すか、イベントのペイロードをジョブに設定することができます。後方の場合は、ジョブが起動すると、イベントのペイロードは http://jira.codehaus.org/secure/Signup.jspa です。

Quartzにイベントをディスパチする前に、以下のプロパティをMuleEventに設定することができます:

プロパティ 説明
jobObject 起動するジョブのインスタンス。
jobRef JNDI, Spring, Classloaderコンテナのようなコンテナ・コンテキストのジョブ・オブジェクトの参照名。

ジョブがイベントのペイロードに設定された場合は、これらのプロパティは無視されて自動的にDelegatingJobが利用されます。

明示的にDelegating Jobを設定する場合は、出力エンドポイント(outbound endpoint)を設定します:

<endpoint name="schedulerEndpoint" address="quartz:/myService">
    <properties>
        <property name="jobClass" value="org.mule.providers.quartz.jobs.DelegatingJob"/>
        <property name="jobRef" value="com.foo.MyQuartzJob"/>
        <property name="repeatInterval" value="10000"/>
    </properties>
</endpoint>

ESB Muleクライアント・ディスパッチ・ジョブ

ESB Muleエンドポイントに、一回又は繰り返しするメッセージのディスパッチをスケジュールします。このジョブを設定するには、  outbound (出力)エンドポイントに以下の設定をします:

<endpoint name="schedulerEndpoint" address="quartz:/myService">
    <properties>
        <property name="jobClass" value="org.mule.providers.quartz.jobs.MuleClientDispatchJob"/>
        <property name="jobDispatchEndpoint" value="vm://service.X"/>
        <property name="repeatInterval" value="10000"/>
        <property name="repeatCount" value="5"/>
    </properties>
</endpoint>

その他に以下のプロパティもあります:

プロパティ 説明
jobClass 実行をスケジュールするジョブ・クラス。
jobDispatchEndpoint org.mule.providers.quartz.jobs.MuleClientDispatchJob に必須なプロパティです。イベントのディスパッチ先を指定します。

ジョブをスケジュールしたイベントは、イベント・ペイロードをディスパッチしたイベントと同じです。ジョブは同じペイロードで実行されます。このジョブは指定した日時にジョブを1回実行する場合に使われる場合が多くあります。

MuleClientReceiveJob

MuleClientDispatchJob と類似していますが、ディスパッチする前にエンドポイントから受信します。受信が無い場合は(受信結果が null )の場合は、ディスパッチは行われません。

<endpoint name="schedulerEndpoint" address="quartz:/myService">
    <properties>
        <property name="jobClass" value="org.mule.providers.quartz.jobs.MuleClientReceiveJob"/>
        <property name="jobReceiveEndpoint" value="jms://queue.X"/>
        <property name="jobReceiveTimeout" value="10000"/>
        <property name="jobDispatchEndpoint" value="vm://service.X"/>
        <property name="repeatInterval" value="10000"/>
    </properties>
</endpoint>

設定は MuleClientDispatchJob と同じですが、以下の新しいパラメータが追加されます:

プロパティ 説明
jobReceiveEndpoint ディスパッチする前に、イベント・ペイロードを銃身するエンドポイントURI(又はエンドポイント識別子)
jobReceiveTimeout リクエストをタイムアウトして null を返すまで待つ時間(ミリ秒)。

Cron文

cronエンドポイントは以下のように設定します:

<endpoint address="quartz:/myService">
    <properties>
        <property name="cronExpression" value="0 0 2 * * ?" />
        ....
    </properties>
</endpoint>

cronExpression プロパティ文法の詳細はここにあります。

Quartzスクリプトの例

QuartzとGroovyと使う例です:(Glenn Murry氏に感謝!)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mule-configuration PUBLIC 
          "-//MuleSource //DTD mule-configuration XML V1.0//EN"
          "http://mule.mulesource.org/dtds/mule-configuration.dtd">

<mule-configuration id="Script_Sample" version="1.0">
 <description>
 このESB Muleの設定は、Quartzプロバイダを使ってスクリプトをスケジュールする例です。
 </description>

<!-- www.stephenpasco.comから -->
<global-endpoints>
 <endpoint name="quartz.in" address="quartz:/myService">
  <properties>
   <property name="repeatInterval" value="2000" />
   <property name="repeatCount" value="4" />
   <property name="startDelay" value="3000" />
   <property name="payloadClassName" value="" />
  </properties>
 </endpoint>
</global-endpoints>

<model name="sample">
 <mule-descriptor name="scriptRunner"
                  implementation="org.mule.components.script.jsr223.ScriptComponent"
                  inboundEndpoint="quartz.in">
  <properties>
   <property name="scriptEngineName" value="groovy"/>
    <text-property name="scriptText">
      println "Yo!"
    </text-property>
   </properties>
  </mule-descriptor>
 </model>

</mule-configuration>
Adaptavist Theme Builder Powered by Atlassian Confluence