Files
crawler-plugin/backend-java/src/main/java/com/nanri/aiimage/config/HttpClientProperties.java
T

60 lines
1.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.nanri.aiimage.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 统一 HTTP 客户端配置命名空间(task-167)。
*
* `aiimage.http-client.*`connect/read/call 超时与重试默认值与现状一致
* (RustFS 客户端契约表基线);非法值钳制到合理范围;env 覆盖走宽松绑定。
*/
@Data
@Component
@ConfigurationProperties(prefix = "aiimage.http-client")
public class HttpClientProperties {
/** 连接超时(毫秒),默认 10000 与现状一致。 */
private long connectTimeoutMillis = 10_000;
/** 读取超时(毫秒),默认 60000 与现状一致。 */
private long readTimeoutMillis = 60_000;
/** 调用总超时(毫秒),默认 90000 与现状一致。 */
private long callTimeoutMillis = 90_000;
/** 最大重试次数(0-10),默认 3 与现状一致。 */
private int maxRetries = 3;
/** 重试基础延迟(毫秒),默认 500 与现状一致。 */
private long baseRetryDelayMillis = 500;
/** 钳制后的连接超时:1s-300s。 */
public long effectiveConnectTimeoutMillis() {
return clamp(connectTimeoutMillis, 1_000, 300_000);
}
/** 钳制后的读取超时:1s-3600s。 */
public long effectiveReadTimeoutMillis() {
return clamp(readTimeoutMillis, 1_000, 3_600_000);
}
/** 钳制后的调用总超时:1s-7200s。 */
public long effectiveCallTimeoutMillis() {
return clamp(callTimeoutMillis, 1_000, 7_200_000);
}
/** 钳制后的重试次数:0-10。 */
public int effectiveMaxRetries() {
return (int) clamp(maxRetries, 0, 10);
}
private static long clamp(long value, long min, long max) {
if (value < min) {
return min;
}
return Math.min(value, max);
}
}