319.6. サポートクラス
コンポーネントとは別に、Camel Spring Batch は、Spring Batch インフラストラクチャーにフックするために使用できるサポートクラスも提供します。
319.6.1. 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>
319.6.2. CamelItemWriter
CamelItemWriter
は CamelItemReader
と同様の目的を持っていますが、処理されたデータのチャンクを書き込む専用です。
たとえば、以下のスニペットは、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>
319.6.3. 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>
319.6.4. CamelJobExecutionListener
CamelJobExecutionListener
は、ジョブ実行イベントを Camel エンドポイントに送信する org.springframework.batch.core.JobExecutionListener
インターフェイスの実装です。
Spring Batch によって生成された org.springframework.batch.core.JobExecution
インスタンスは、メッセージのボディーとして送信されます。コールバックの前後を区別するには、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>