超时休息服务

时间:2015-08-30 22:51:44

标签: java rest

我正在休息服务。该服务使用由API抽象的专有协议从传统的第三方系统检索信息,该API现在暴露以设置对该系统的调用的任何类型的超时。随着服务负载的增加,系统变慢。

如果操作时间过长,有没有办法让服务发送默认响应?关于如何解决这个问题的任何建议将不胜感激?

2 个答案:

答案 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)

我认为您应该提供有关特定专有系统的更多详细信息,以便我们更好地理解。根据目前提供的信息,无法从客户端实施控制,因为他只是一个无法控制服务的请求者。