我第一次使用Spring任务执行器系统,只是无法让它工作.
我已经读过关于这个问题的多个职位了,但是没有任何迹象表明任务正在执行。首先,我在服务bean上尝试了@调度注释,但是在阅读了AOP代理遇到的问题之后,我使用了直接的XML配置,如下所示:
<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,测试方法如下所示:
public void test (){
System.err.println("run in job");
}在使用调试日志记录设置运行时,我了解以下内容:
我希望在我的应用程序或spring单元测试运行时每5秒看到一次,以查看控制台上打印出的test()方法的消息。我正在使用Spring3.0.6,并在Mac10.6Java 6上测试通过Eclipse3.7中的Jetty运行的应用程序。我们使用的所有其他Spring特性(数据库、安全性、MVC工作正常)。如果有任何建议,我会非常感激的!
发布于 2012-10-16 01:55:00
如果您没有尝试将Quartz添加到您的类路径(您不应该需要它,但是.)。
最有可能发生的情况是调度程序正在运行,并且无法执行代理。代理可能抛出异常,调度程序的异常策略可能会丢弃它。
另一个选择..。(我可能会被否决)是不使用Spring调度器。除非您需要Quartz Cron工具,否则我发现Spring任务调度程序过于复杂,但与以下内容相比却很薄弱:
番石榴ListeningScheduledExecutorService
侦听执行器服务将允许您链接事件。您可以轻松地将上述内容包装在某些服务bean中。是的,我知道你可能想要Spring提供的解耦..。但是,通过结合ExecutorService和番石榴EventBus,您可以得到更好的解耦和基于事件的方法。
发布于 2012-10-15 09:37:23
试试这个:
<task:scheduled-tasks scheduler="taskScheduler">
<task:scheduled ref="fileWriter" method="test" fixed-rate="5000" />
</task:scheduled-tasks>https://stackoverflow.com/questions/12892144
复制相似问题