【问题标题】:Start a route on suspend state and scheduling the resume在挂起状态下启动路由并安排恢复
【发布时间】:2013-05-05 06:47:19
【问题描述】:

对于某些 Camel 路线,我需要以下行为:路线必须以活动状态开始,但如果当前时间在 X AM 和 Y PM 之间,则还必须暂停。

所有路由都以 from 中的计时器开始(例如每 30 秒、每 5 分钟……),但我希望路由仅在一天中的给定时间段内触发。

我可以使用 ScheduledRoutePolicy 来安排当前活动和正在运行的路线的自动暂停和恢复。

但我不明白如何在暂停状态下启动路线,例如,如果当前时间是路线应该暂停的时间段。 RoutePolicy 安排了一个暂停/重新启动路由的作业,但是当 Camel 启动时,我的路由都会被触发,无论路由是否应该暂停。

我可以实现它的唯一方法似乎是将时间参数放入计时器中,从而设置第一个事件的时间。

在这种情况下,如果它在预定时间之前,则计时器不会触发任何事件。 ScheduledPolicy 将负责暂停路由,然后在一段时间后恢复路由。

【问题讨论】:

    标签: java timer routes apache-camel


    【解决方案1】:

    您可以使用 autoStartup 选项将路线设置为不启动。更多详情请查看此页面:http://camel.apache.org/configuring-route-startup-ordering-and-autostartup.html

    【讨论】:

    • 感谢回复,我知道autostartup=false参数。但是这样做,路由初始状态将被停止。从骆驼文档中,他们的建议是暂停/恢复路线,而不是启动/停止它们camel.apache.org/maven/current/camel-core/apidocs/org/apache/…
    • 没关系。路由策略也将处理该问题以第一次启动路由,然后暂停/恢复。虽然你可以在你的路由策略中配置你想要做的事情。
    • 我阅读了 CronScheduledRoutePolicy 的源代码,这是一个扩展 ScheduledRoutePolicy 的类,但它不会恢复“停止”的路由,它只会恢复暂停的路由。所以,这有点棘手,我想我必须编写一个定制的策略来管理我的案例。
    猜你喜欢
    • 2012-05-23
    • 1970-01-01
    • 2017-04-25
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多