我有一个设置为每五分钟运行一次的Camel路由
@Component
public class CamelRoute extends RouteBuilder{
private final String comment = "Cron"
@Override
public void setup() {
from("quartz2://myGroup/myTimerName?cron=0+0/5+12-18+?+*+MON-FRI")
.log("Processing from"+comment)
.to("activemq:Totally.Rocks");
}
}
我想强制它从Spring http请求手动运行,并在CamelRoute中更改 comment 字段
@RequestMapping(value = "/ex/foos", method = RequestMethod.GET)
@ResponseBody
public String getFoosBySimplePath() {
//TODO: Start Camel route
//change camel log "comment" from "Cron" to "HTTP request"
}
答案 0 :(得分:1)
我的任务解决方案很简单,但如果使用Camel文档则不简单:
startRoute (字符串 routeId)如果已经开始给定路线 以前停止了
我添加了另一条路线
from("timer://manualRestart?repeatCount=1")
.routeId("manualRestart")
.noAutoStartup()
.to("activemq:Totally.Rocks");
并使用 startRoute()在需要时启动它
public String getFoosBySimplePath() {
camelContext.startRoute("manualRestart");
}
为什么我发现它“不直截了当”?因为文档说,startRoute()可以启动先前停止的路由。 Route从未停止过,默认情况下配置为不启动。
答案 1 :(得分:0)
要手动运行Camel路线,您可以使用FluentProducerTemplate。您可以像普通bean一样自动装配实例。
老实说,我不确定它是否适用于石英端点,但我确信它与“直接:”端点一起工作得很好。无论如何,这可能是你的发现的良好开端。