Apache Camel CronScheduledRoutePolicy不停止路由吗?
我正在尝试启动和停止从google-pubsub组件读取的路由,并推送到JDBC数据源(oracle)。我只想在一天中的某些时间执行此操作,因为Oracle数据库每天晚上从晚上10点至凌晨12点下降,在此期间,我不希望我的路由继续处理传入的pubsub消息并希望其停止。但是当我尝试时,停止时间的路线会显示:
'{“ severity”:“ WARN”,“ message”:“ o.a.c.r.q.ScheduledRoutePolicy |路由未处于启动/暂停状态,无法停止。当前路由状态为“已停止”}}'
@Override
public void configure() {
CronScheduledRoutePolicy routePolicy = new CronScheduledRoutePolicy();
routePolicy.setRouteStartTime("0 15 00 * * ?");
routePolicy.setRouteStopTime("0 00 22 * * ?");
System.out.println("am here!!");
onException(Exception.class)
.log(LoggingLevel.ERROR," Error processing message: ${header['CamelGooglePubsub.MessageId']} : ${exception}" )
.to("log:app_error.log?level=DEBUG&showAll=true&showException=true")
.markRollbackOnlyLast()
.end();
CamelContext camelContext= getContext();
System.out.println("Route Status is" + camelContext.getRouteStatus("{{routeID}"));
from("google-pubsub:{{google_project_name}}:{{google_pubsub_subscription}}"+
"?concurrentConsumers={{concurrent_consumers}}"+
"&maxMessagesPerPoll={{max_messages_per_poll}}"+
"&connectionFactory=#googlePubsubConnectionFactory")
.routeId("{{routeID}")
.routePolicy(startPolicy)
.noAutoStartup()
我希望路线从上午12:15开始(routePolicy.setRouteStartTime(“ 0 15 00 * *?”));
,结束于 routePolicy.setRouteStartTime(“ 0 00 22 * *?”);
我是正确的做法还是应该在路线上使用process()强制停止它,该怎么办?
谢谢
答案 0 :(得分:0)
完成命令后,我认为它更像是弹簧靴问题,而不是骆驼问题。
我认为使用骆驼cron组件无法完成这项工作。您可以考虑通过运行cron脚本从外部从Docker映像中将关闭命令发送到Spring Boot应用程序,从而从外部调用服务以关闭整个Spring Boot应用程序。
这里是an example,您可以参考。