45.6. 例

この Camel コンポーネントを使用すると、処理するジョブを要求し、それらを Beanstalkd デーモンに提供できます。簡単なデモルートは次のようになります

from("beanstalk:testTube").
   log("Processing job #${property.beanstalk.jobId} with body ${in.body}").
   process(new Processor() {
     @Override
     public void process(Exchange exchange) {
       // try to make integer value out of body
       exchange.getIn().setBody( Integer.valueOf(exchange.getIn().getBody(classOf[String])) );
     }
   }).
   log("Parsed job #${property.beanstalk.jobId} to body ${in.body}");
from("timer:dig?period=30seconds").
   setBody(constant(10)).log("Kick ${in.body} buried/delayed tasks").
   to("beanstalk:testTube?command=kick");

最初のルートでは、チューブ testTube で新しいジョブをリッスンしています。それらが到着すると、メッセージ本文から整数値を解析しようとしています。成功した場合はログに記録し、交換が正常に完了すると、Camel コンポーネントはこのジョブを Beanstalk から自動的に 削除 します。反対に、ジョブデータを解析できない場合、エクスチェンジは失敗し、Camel コンポーネントはデフォルトでそれを 葬ります。そのため、後で処理できるか、失敗したジョブを手動で検査することになります。

したがって、2 番目のルートは Beanstalk に定期的に 10 個のジョブを葬った状態や遅延状態から通常のキューに 追い出すよう に要求します。