首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹簧任务调度

弹簧任务调度
EN

Stack Overflow用户
提问于 2012-10-15 08:51:20
回答 2查看 1.1K关注 0票数 1

我第一次使用Spring任务执行器系统,只是无法让它工作.

我已经读过关于这个问题的多个职位了,但是没有任何迹象表明任务正在执行。首先,我在服务bean上尝试了@调度注释,但是在阅读了AOP代理遇到的问题之后,我使用了直接的XML配置,如下所示:

代码语言:javascript
复制
<task:executor id="executorWithPoolSizeRange"
        pool-size="5-25"
        queue-capacity="100" />       
 <task:scheduler id="taskScheduler" pool-size="2" /> 
 <task:scheduled-tasks>
 <task:scheduled ref="fileWriter" method="test" fixed-rate="5000" />
</task:scheduled-tasks>

fileWriter bean是一个普通的Spring,测试方法如下所示:

代码语言:javascript
复制
public void test (){
   System.err.println("run in job");
}

在使用调试日志记录设置运行时,我了解以下内容:

  1. beans被加载并初始化。
  2. 如果我输入了'method‘属性的名称,就会抛出一个异常,因此任务定义至少会被解析。
  3. 调试语句中没有指示任务激活的任何内容。
  4. 永远不会触发测试方法中的断点。

我希望在我的应用程序或spring单元测试运行时每5秒看到一次,以查看控制台上打印出的test()方法的消息。我正在使用Spring3.0.6,并在Mac10.6Java 6上测试通过Eclipse3.7中的Jetty运行的应用程序。我们使用的所有其他Spring特性(数据库、安全性、MVC工作正常)。如果有任何建议,我会非常感激的!

EN

回答 2

Stack Overflow用户

发布于 2012-10-16 01:55:00

如果您没有尝试将Quartz添加到您的类路径(您不应该需要它,但是.)。

最有可能发生的情况是调度程序正在运行,并且无法执行代理。代理可能抛出异常,调度程序的异常策略可能会丢弃它。

另一个选择..。(我可能会被否决)是不使用Spring调度器。除非您需要Quartz Cron工具,否则我发现Spring任务调度程序过于复杂,但与以下内容相比却很薄弱:

番石榴ListeningScheduledExecutorService

侦听执行器服务将允许您链接事件。您可以轻松地将上述内容包装在某些服务bean中。是的,我知道你可能想要Spring提供的解耦..。但是,通过结合ExecutorService和番石榴EventBus,您可以得到更好的解耦和基于事件的方法。

票数 1
EN

Stack Overflow用户

发布于 2012-10-15 09:37:23

试试这个:

代码语言:javascript
复制
 <task:scheduled-tasks scheduler="taskScheduler">
   <task:scheduled ref="fileWriter" method="test" fixed-rate="5000" />
 </task:scheduled-tasks>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12892144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档