第159章 SpringBatch


Spring Batch コンポーネント

spring-batch: コンポーネントとサポートクラスは、Camel と Spring Batch インフラストラクチャー間の統合ブリッジを提供します。
Maven ユーザーは、このコンポーネントの pom.xml に以下の依存関係を追加する必要があります。
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-spring-batch</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

URI 形式

spring-batch:jobName[?options]
Copy to Clipboard Toggle word wrap
jobName は、Camel レジストリーにある Spring Batch ジョブの名前を表します。
警告
このコンポーネントはプロデューサーエンドポイントの定義にのみ使用できます。つまり、from () ステートメントで Spring Batch コンポーネントを使用することはできません。

オプション

Expand
名前 デフォルト値 説明
jobLauncherRef null 非推奨で、Camel 3.0!Camel 2.10:代わりに jobLauncher=#theName を使用してください。
jobLauncher null Camel 2.11.1: Camel レジストリーから使用する JobLauncher を明示的に指定します。

使用方法

Spring Batch コンポーネントがメッセージを受信すると、ジョブ実行がトリガーされます。ジョブは、以下のアルゴリズムに従って解決された org.springframework.batch.core.launch.JobLaucher インスタンスを使用して実行されます。
  • JobLauncher がコンポーネントに手動で設定されている場合は、これを使用します。
  • jobLauncherRef オプションがコンポーネントに設定されている場合、Camel Registry で指定の名前で JobLauncher を検索します。非推奨で、Camel 3.0 で削除されます。
  • jobLauncher 名で Camel レジストリーに登録されている JobLauncher がある場合は、これを使用します。
  • 上記の手順で JobLauncher を解決できず、Camel レジストリーに JobLauncher インスタンスが 1 つだけある場合は、これを使用します。
メッセージで見つかったすべてのヘッダーは、ジョブパラメーターとして JobLauncher に渡されます。文字列、LongDouble、および java.util.Date の値は org.springframework.batch.core.JobParametersBuilder にコピーされます。他のデータ型は String に変換されます。

Spring Batch ジョブ実行をトリガーします。
from("direct:startBatch").to("spring-batch:myJob");
Copy to Clipboard Toggle word wrap
JobLauncher セットで Spring Batch ジョブの実行を明示的にトリガーします。
from("direct:startBatch").to("spring-batch:myJob?jobLauncherRef=myJobLauncher");
Copy to Clipboard Toggle word wrap
JobLauncher によって返される Camel 2.11.1JobExecution インスタンス以降、SpringBatchProducer によって出力メッセージに転送されます。JobExecution インスタンスを使用して、Spring Batch API を直接使用して一部の操作を実行できます。
from("direct:startBatch").to("spring-batch:myJob").to("mock:JobExecutions");
...
MockEndpoint mockEndpoint = ...;
JobExecution jobExecution = mockEndpoint.getExchanges().get(0).getIn().getBody(JobExecution.class);
BatchStatus currentJobStatus = jobExecution.getStatus();
Copy to Clipboard Toggle word wrap

サポートクラス

Component とは別に、Camel Spring Batch は Spring Batch インフラストラクチャーへのフックに使用できるサポートクラスも提供します。

CamelItemReader

CamelItemReader を使用すると、Camel インフラストラクチャーから直接バッチデータを読み取ることができます。
たとえば、以下のスニペットは、JMS キューからデータを読み取るように Spring Batch を設定します。
<bean id="camelReader" class="org.apache.camel.component.spring.batch.support.CamelItemReader">
  <constructor-arg ref="consumerTemplate"/>
  <constructor-arg value="jms:dataQueue"/>
</bean>

<batch:job id="myJob">
  <batch:step id="step">
    <batch:tasklet>
      <batch:chunk reader="camelReader" writer="someWriter" commit-interval="100"/>
    </batch:tasklet>
  </batch:step>
</batch:job>
Copy to Clipboard Toggle word wrap

CamelItemWriter

CamelItemWriterCamelItemReader と同様に目的がありますが、処理されたデータのチャンクの書き込み専用です。
たとえば、以下のスニペットは、データを JMS キューに書き込むように Spring Batch を設定します。
<bean id="camelwriter" class="org.apache.camel.component.spring.batch.support.CamelItemWriter">
  <constructor-arg ref="producerTemplate"/>
  <constructor-arg value="jms:dataQueue"/>
</bean>

<batch:job id="myJob">
  <batch:step id="step">
    <batch:tasklet>
      <batch:chunk reader="someReader" writer="camelwriter" commit-interval="100"/>
    </batch:tasklet>
  </batch:step>
</batch:job>
Copy to Clipboard Toggle word wrap

CamelItemProcessor

CamelItemProcessor は Spring Batch org.springframework.batch.item.ItemProcessor インターフェイスの実装です。後者の実装は Request Reply パターン をリレーし、バッチ項目の処理を Camel インフラストラクチャーに委譲します。処理する項目は、メッセージのボディーとして Camel エンドポイントに送信されます。
たとえば、以下のスニペットは、Direct エンドポイントSimple 式言語 を使用してバッチアイテムの簡単な処理を実行します。
<camel:camelContext>
  <camel:route>
    <camel:from uri="direct:processor"/>
    <camel:setExchangePattern pattern="InOut"/>
    <camel:setBody>
      <camel:simple>Processed ${body}</camel:simple>
    </camel:setBody>
  </camel:route>
</camel:camelContext>

<bean id="camelProcessor" class="org.apache.camel.component.spring.batch.support.CamelItemProcessor">
  <constructor-arg ref="producerTemplate"/>
  <constructor-arg value="direct:processor"/>
</bean>

<batch:job id="myJob">
  <batch:step id="step">
    <batch:tasklet>
      <batch:chunk reader="someReader" writer="someWriter" processor="camelProcessor" commit-interval="100"/>
    </batch:tasklet>
  </batch:step>
</batch:job>
Copy to Clipboard Toggle word wrap

CamelJobExecutionListener

CamelJobExecutionListener は、ジョブ実行イベントを Camel エンドポイントに送信する org.springframework.batch.core.JobExecutionListener インターフェイスの実装です。
Spring Batch によって生成された org.springframework.batch.core.JobExecution インスタンスは、メッセージのボディーとして送信されます。before- と after-callbacks SPRING_BATCH_JOB_EVENT_TYPE ヘッダーを区別するには、BEFORE または AFTER 値に設定されます。
以下のスニペット例は、Spring Batch ジョブ実行イベントを JMS キューに送信します。
<bean id="camelJobExecutionListener" class="org.apache.camel.component.spring.batch.support.CamelJobExecutionListener">
  <constructor-arg ref="producerTemplate"/>
  <constructor-arg value="jms:batchEventsBus"/>
</bean>

<batch:job id="myJob">
  <batch:step id="step">
    <batch:tasklet>
      <batch:chunk reader="someReader" writer="someWriter" commit-interval="100"/>
    </batch:tasklet>
  </batch:step>
  <batch:listeners>
    <batch:listener ref="camelJobExecutionListener"/>
  </batch:listeners>
</batch:job>
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat