监视 Java 请求



有没有办法确定进程当前是否正在运行,并定义它在触发时已经运行了多长时间?

例如,我对一个名为 getFirstName() 的方法进行 Web 服务/Web 应用程序调用,该方法调用数据库以检索名称。在此之前,我有一个AOP建议的方法拦截器,它将拦截方法getFirstName()。现在在拦截器中,我将记下此请求的开始时间,然后继续实际方法,现在如果请求已经运行了很长时间,我需要触发发送给用户的邮件 time.so 如何跟踪此请求时间?我不想使用任何线程来避免复杂性,有没有简单的方法可以做到这一点?

谢谢!

您可以自己组织它。在 getFirstName() 中,你
执行一些操作/操作序列。

1)getFirstName() 必须以某种方式轮询自己的状态(因为
你说你不希望另一个进程/线程监视它)。但是这个
听起来很奇怪,而且更难做到。此外,它有这个问题,如果
getFirstName() 调用一些长时间运行的操作,然后轮询将
不工作(因为getFirstName()目前正忙于其他事情)。




2)
另一个进程/线程可以检查 getFirstName() 进程的状态。
如果状态不是"完成",并且已经过去了相当长的时间,
它将发送电子邮件。获取名字()
的责任就是将其状态设置为完成,一旦完成并启动
一旦它开始。此外,每个 getFirstName() 调用可能需要具有
一些唯一的 ID。基本上就是这样。

您可以使用 Quartz 每 10 秒左右触发一次事件。在那里,您必须检查地图或流程的内容以及它们何时开始。进行计算( now() - startTime()) 并在必要时发送邮件。

最新更新