45.5. 例
この 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 個のジョブを葬った状態や遅延状態から通常のキューに 追い出すよう に要求します。