使用Camel进行调度 - Quartz2和Spring启动

时间:2018-01-20 09:03:15

标签: spring-boot apache-camel quartz-scheduler

我正在尝试使用Camel和Quartz2设置调度程序,我的目标是仅在特定时间段内从队列中读取消息。我在启动服务器时收到以下错误。

  

org.apache.camel.spring.boot.CamelSpringBootInitializationException:   org.apache.camel.FailedToCreateRouteException:无法创建路由   ROUTE1:   路线(ROUTE1)[[从[quartz2:?// simpleTimer的cron = 0/1 + 0 + + 13-15 ...   因为无法解析端点:   quartz2:// simpleTimer?cron = 0%2F1 + 0 + 13-15 +%3F + * + MON-FRI由于:否   使用scheme找到的组件:quartz2

这是pom条目

    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-quartz2</artifactId>
        <version>2.19.2</version>
        <scope>test</scope>
   </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-spring-boot-dependencies</artifactId>
        <version>2.19.2</version>
    </dependency>

路线中的代码段

 from("quartz2://simpleTimer?cron=0/1+0+13-14+?+*+MON-FRI")
        .log("Reading msgs")
        .from("some queue")
        .bean("myBean")

也试过这个

from("quartz2://testGroup/someName?cron=0/1+0+13-14+?+*+MON-FRI").

我多次尝试解决问题但失败了,任何人都可以帮我解决这个问题吗? 我可以使用simpleTimer和Cron设置,还是有其他方法吗? 任何有关此方面的建议/帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:0)

该错误表示您尚未将maven中的依赖项添加到camel-quartz2组件中。

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-quartz2</artifactId>
    <version>x.x.x</version>
    <!-- use the same version as your Camel core version -->
</dependency>

答案 1 :(得分:0)

问题是你在相同的路线上放了2。每条路线只有 中的

当您从队列中读取时,例如使用jms组件,您可以在消息到达后直接获取消息。所以不需要quarz组件。

您使用哪个组件从队列中读取?可能这个组件有更多的选项可以帮助你!

答案 2 :(得分:0)

当我在路径文件中创建QuartzComponent的Bean实例时,这解决了。另外,我们可以在路径定义中有多个“from”。