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

Dev*_*ari 4 java jax-rs jax-ws jersey-client jersey-2.0

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

sla*_*eth 5

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

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

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

如果这些调用直接驱动一个接口,那么您可能需要更短的时间,因为您的用户可能对这种延迟没有耐心。如果在后台或批处理中调用它,则可能可以接受更长的时间。这取决于你。