Apache camel 如何动态更改apache camel计时器轮询周期

Apache camel 如何动态更改apache camel计时器轮询周期,apache-camel,Apache Camel,您好,我正在我的路线中使用apache camel计时器组件。我需要动态更改周期轮询间隔。我有一个业务方法,它将返回一些时间间隔,并且它将根据逻辑而有所不同。我必须将此消息传递给计时器,以便计时器根据此间隔进行轮询。我不想随着性能的提高,以新的间隔开始和停止路线。 我想要一个计时器路由,必须动态设置周期。计时器在运行时不能更改,因为它使用的是无法更改的JDK java.util.timer 您可以使用camel quartz,它允许在运行时更改调度程序,这可以使用JMX来完成。hawtio中还有

您好,我正在我的路线中使用apache camel计时器组件。我需要动态更改周期轮询间隔。我有一个业务方法,它将返回一些时间间隔,并且它将根据逻辑而有所不同。我必须将此消息传递给计时器,以便计时器根据此间隔进行轮询。我不想随着性能的提高,以新的间隔开始和停止路线。
我想要一个计时器路由,必须动态设置周期。

计时器在运行时不能更改,因为它使用的是无法更改的JDK java.util.timer


您可以使用camel quartz,它允许在运行时更改调度程序,这可以使用JMX来完成。hawtio中还有一个Quartz插件,允许您使用web UI更改调度程序。

您可以尝试从Camel上下文中获取端点,并在需要更改间隔时直接对其进行操作。不要停止并开始尝试挂起和恢复。您能给一些关于业务方法的想法吗?比如基于哪个数据(文件的可用性或它收到的某些消息等),我的应用程序不是基于UI的,不会有任何用户干预。如果我使用quartz,它会支持JTA/XA事务吗。我读了一些关于quartz与XA有问题的博客。当触发事件时,我将从数据库读取一条记录,并使用不同的资源管理器路由到其他数据库或WebSphereMQ。例如:from(quartzuri).routeId(“testId”).process(新处理器(){public void process(Exchange e){//read the record from database}).transactive(“需要传播”)这对quartz有效吗?嗨,克劳斯·易卜生,关于我关于quartz的问题有什么建议吗?