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");
在第一个路由中,我们正在监听新的作业。当它们到达时,我们将尝试从消息正文解析整数值。如果成功,请记录它,并成功交换完成,使 Camel 组件能够自动从 Beanstalk 中删除 此任务。简而言,当我们无法解析作业数据时,交换失败,Camel 组件会默认将其捆绑,以便稍后进行处理或可能继续手动检查失败的作业。
因此,第二个路由定期请求 Beanstalk 从周围和/或延迟状态启动 10 个作业到正常队列。