46.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");
在第一个路由中,我们在 tube "testTube"中侦听新作业。当它们到达时,我们尝试从消息正文解析整数值。如果成功,我们会记录日志并成功交换完成,使 Camel 组件从 Beanstalk 自动删除该作业。取而代之,当无法解析作业数据时,交换失败,以及默认接收它的 Camel 组件,以便稍后进行处理,或者我们可能会手动检查失败的作业。
因此,第二个路由定期请求 Beanstalk,从而向正常队列启动 10 个作业和/或延迟状态。