我正在休息服务。该服务使用由API抽象的专有协议从传统的第三方系统检索信息,该API现在暴露以设置对该系统的调用的任何类型的超时。随着服务负载的增加,系统变慢。
如果操作时间过长,有没有办法让服务发送默认响应?关于如何解决这个问题的任何建议将不胜感激?
答案 0 :(得分:1)
您可以将生成api请求的代码块包装到另一个线程中,然后使用Future来超时该请求。
这是一个如何做的例子;
https://stackoverflow.com/a/15120935/975816
超时后;只是基本上实现异常并在catch块中设置默认响应;
String response;
try {
response = future.get(5, TimeUnit.MINUTES);
}
catch (InterruptedException ie) {
/* Handle the interruption. Or ignore it. */
response = "Default interrupted response";
}
catch (ExecutionException ee) {
/* Handle the error. Or ignore it. */
response = "Default exception response";
}
catch (TimeoutException te) {
/* Handle the timeout. Or ignore it. */
response = "Default timeout response";
}
答案 1 :(得分:0)
我认为您应该提供有关特定专有系统的更多详细信息,以便我们更好地理解。根据目前提供的信息,无法从客户端实施控制,因为他只是一个无法控制服务的请求者。