我目前正在使用axis2编写一个Java WebService。然而,一个特定的请求需要我在另一个服务器上持续轮询一个状态大约3-10秒的时间。
我想使用Thread.sleep来做轮询,就像每隔500mri轮询3秒。它有没有像性能问题这样的暗示,或者有人能提出一个更好的想法?
编辑我的架构是这样的
客户端<-> axis2 <->服务器轮询3-10秒
发布于 2010-07-03 06:23:47
有许多不同的选项:
如果您可以更改客户端,那么将等待转移到客户端可能是一个好主意。这意味着服务器不会有大量的线程挂起。
因此,您将有两个web服务,一个用于初始化请求,另一个用于获取结果。客户端(不是axis服务器)将调用第一个web服务,然后可能多次调用第二个web服务。
这样做的好处是,您不必对服务器中的线程做任何工作(这大大简化了工作)。线程代码在客户端。
如果您最终在服务器上休眠,请确保您有足够的线程,如果您正在使用Tomcat,请参阅Best practices for configuring Apache / Tomcat
发布于 2010-07-02 10:33:14
另一种模式是让原始调用者返回一个received_ok标志,然后在他们从第二个服务器返回时将结果存储在您的服务器上。然后,第一个服务器将重新连接,然后您可以返回结果,也可以返回它们尚未返回的事实。这样做的好处是,您可以将轮询委托给另一个实例,而不会占用原始服务器。
https://stackoverflow.com/questions/3162763
复制相似问题