43.5. 例
この Camel コンポーネントを使用すると、ジョブをリクエストして Beantalkd デーモンに提供することができます。シンプルなデモルートは次のようになります。
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 コンポーネントにより、このジョブが自動的に Beantalk から 削除 されます。ただし、ジョブデータを解析できない場合、エクスチェンジが失敗し、Camel コンポーネントがデフォルトで検出され、後で処理するか、失敗したジョブを手動で検査することができます。
2 つ目のルートは、定期的に Beantalk を 要求 して 10 個のジョブを開始し、または遅延状態を通常のキューに入れます。