如何解决如何在camel运行时动态设置quartz cron表达式?
我需要在我的骆驼路线运行时动态设置石英 cron 表达式。如何实现?
以下当前实现的示例代码:
<camel:route id="splitFileRoute">
<camel:from uri="file:{{file.input.dir}}?
preMove={{file.inprogress.dir}}&
move={{file.processed.dir}}&
scheduler=quartz2&
scheduler.cron={{file.split.cron.expression}}&
filter=#fileFilter" />
<camel:split streaming="true">
<camel:tokenize token="\n" group="{{file.split.size}}"/>
<camel:setHeader headerName="channel">
<camel:simple>{{so.filewrite.channel}}</camel:simple>
</camel:setHeader>
<camel:bean ref="fileProcessor" id="spiltFile" method="spiltFile" />
<camel:removeHeaders pattern="CamelFile*"></camel:removeHeaders>
<camel:setHeader headerName="CamelFileName">
<camel:simple>${header.fileName}</camel:simple>
</camel:setHeader>
<toD uri="file:${in.header.filePath}?
doneFileName=${file:name.noext}.eot&
fileExist=Append" />
</camel:split>
<camel:bean ref="fileProcessor" id="resetIndex" method="resetIndex" />
</camel:route>
在上面的代码中, file.split.cron.expression=0+10+0+?+++* 在属性文件中定义。目前它被设置为一个预定义的值,该值是在应用程序启动期间设置的。我需要做的是在运行时动态设置这个值。
我需要根据 API 调用的输入设置骆驼路线中 cron 表达式的值。通过动态设置值,我指向了这个方面。
解决方法
您可以使用 CronScheduledRoutePolicy
来触发您的路线:
CronScheduledRoutePolicy startPolicy = new CronScheduledRoutePolicy();
startPolicy.setRouteStartTime( this.getDynamicExpression() );
from("...")
.routePolicy(startPolicy)
.noAutoStartup()
.to("...");
更多信息请访问: https://camel.apache.org/manual/latest/cronscheduledroutepolicy.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。