自定义Camel Consumer配置Quartz调度后,如何使poll方法按Quartz规则执行?
解决方案
核心问题是你的自定义端点仍在使用Camel默认的调度器,没有切换到Quartz实现,需要做以下修改:
让端点创建Quartz调度器
在MyEndPoint中重写createScheduler()方法,使用Camel提供的QuartzSchedulerFactory生成Quartz调度器,替换默认的调度器实现:@Override protected ScheduledExecutorService createScheduler() throws Exception { QuartzSchedulerFactory factory = new QuartzSchedulerFactory(); factory.setCamelContext(getCamelContext()); factory.setEndpoint(this); return factory.createScheduler(); }确保消费者使用端点的调度器
你的MyConsumer继承ScheduledPollConsumer时,已经通过父类构造器关联了端点,只要端点返回的是Quartz调度器,消费者就会自动使用它来调度poll任务,无需修改消费者代码。验证配置正确性
- 确认URI中的
scheduler.cron表达式格式正确(你当前的0 */2 * * * ?是每2分钟执行一次的规则,没问题) - 可以在端点初始化时打印调度器实例类型,确认是Quartz的实现类
- 确认URI中的
完成以上修改后,poll方法就会按照你配置的cron规则执行,不再使用默认的500ms间隔。
内容的提问来源于stack exchange,提问作者eborisow
相关产品推荐
相关产品推荐

