我们在Spring Web应用程序中使用计划任务来发送提醒,每日摘要等:
<task:scheduled-tasks>
<task:scheduled ref="fooService" method="bar" cron="0 0/5 * * * ?"/>
</task:scheduled-tasks>
每个计划任务都会调用给定的服务方法(上面的伪代码中的fooService.bar())。我想监控每次执行的持续时间。随着负载,数据或复杂性的增加,其中一些方法可能需要更长的时间。我可以为每个服务方法添加日志记录语句(现在大约10个,但将来可能更多),或者使用方面在每个方法周围放置一些秒表行为。但有没有更直接的方法来实现春季所有预定任务?
答案 0 :(得分:1)
您可以使用:
perf4j - 提供了一些方面和许多统计工具
自定义aspectj方面
使用内置Spring: Standard Logging aspect (interceptor) - 它可以使用$[invocationTime]
占位符来衡量执行时间
在上述所有解决方案中,您需要以某种方式区分要跟踪的方法。您可以使用某些接口的所有方法,所有方法都注释了一些注释(包括自定义注释),使用方法命名约定...
当然,您必须选择最适合您需求的解决方案,因为最终目标是在不添加任何外部代码的情况下进行监控。