MilvusRetryConfig.java 1.72 KB
package com.xly.milvus.config;

import io.milvus.v2.client.RetryConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MilvusRetryConfig {

    @Value("${milvus.retry.max-retry-times:75}")
    private int maxRetryTimes;

    @Value("${milvus.retry.initial-backoff-ms:10}")
    private long initialBackOffMs;

    @Value("${milvus.retry.max-backoff-ms:3000}")
    private long maxBackOffMs;

    @Value("${milvus.retry.backoff-multiplier:3}")
    private int backOffMultiplier;

    @Value("${milvus.retry.retry-on-rate-limit:true}")
    private boolean retryOnRateLimit;

    @Value("${milvus.retry.max-retry-timeout-ms:0}")
    private long maxRetryTimeoutMs;

    @Value("${milvus.retry.enabled:true}")
    private boolean retryEnabled;

    /**
     * 方法名改为 createRetryConfig,避免与类名冲突
     */
    @Bean
    public RetryConfig createRetryConfig() {
        if (!retryEnabled) {
            return RetryConfig.builder()
                    .maxRetryTimes(1)
                    .initialBackOffMs(0)
                    .maxBackOffMs(0)
                    .backOffMultiplier(1)
                    .retryOnRateLimit(false)
                    .maxRetryTimeoutMs(0)
                    .build();
        }

        return RetryConfig.builder()
                .maxRetryTimes(maxRetryTimes)
                .initialBackOffMs(initialBackOffMs)
                .maxBackOffMs(maxBackOffMs)
                .backOffMultiplier(backOffMultiplier)
                .retryOnRateLimit(retryOnRateLimit)
                .maxRetryTimeoutMs(maxRetryTimeoutMs)
                .build();
    }
}