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 个作业从uried 和/或延迟状态启动到普通队列。