RESTful:Jersey中的ClientProperties.CONNECT_TIMEOUT和ClientProperties.READ_TIMEOUT有什么区别?

时间:2016-08-09 14:50:23

标签: java jax-rs jax-ws jersey-2.0 jersey-client

为了在进行REST调用时设置超时,我们应该指定这两个参数,但我不确定为什么两者以及它们服务的具体目的。另外,如果我们只设置其中一个或两个具有不同的值,该怎么办?

1 个答案:

答案 0 :(得分:2)

CONNECT_TIMEOUT是等待与主机建立连接的等待时间。连接后,READ_TIMEOUT是服务器响应给定请求中的所有内容所允许的时间。

如何设置任何一个将取决于您的要求,但它们可以是不同的值。 CONNECT_TIMEOUT不应该需要很大的值,因为它只是与服务器建立套接字连接所需的时间。 30秒应该是充足的时间 - 坦率地说,如果它在10秒内没有完成它太长了,服务器很可能被冲洗,或者至少超载。

READ_TIMEOUT - 这可能会更长,特别是如果您知道您请求的操作/资源需要很长时间才能处理。您可以将此设置为高达60秒,甚至几分钟。同样,这取决于您等待确认流程完成的重要程度,并且您将根据系统在其结束时需要响应的速度来衡量这一点。如果您的客户端在等待进程完成时超时,这并不一定意味着进程停止,它可能会一直运行,直到它在服务器上完成(或者至少,直到它达到服务器的超时)。 / p>

如果这些来电直接驱动某个界面,那么您可能需要更低的时间,因为您的用户可能没有耐心等待此类延迟。如果在后台或批处理过程中调用它,则可以接受更长的时间。这取决于你。